Java基础:创建类对象
在C++中: 在Java中:Java基础:创建类对象,java,c++,Java,C++,在C++中: 在Java中: class Rectangle { int x, y; public: void set_values (int,int); int area () {return (x*y);} }; int main () { Rectangle rect; rect.set_values (3,4); } < C++编译器将创建 Rect对象并预留内存4字节。我想知道Java是如何创建对象的?当您这样做时:- class Rectang
class Rectangle {
int x, y;
public:
void set_values (int,int);
int area () {return (x*y);}
};
int main () {
Rectangle rect;
rect.set_values (3,4);
}
< C++编译器将创建<代码> Rect<代码>对象并预留内存4字节。我想知道Java是如何创建对象的?当您这样做时:-
class Rectangle {
int x, y;
void set_values (int x,int y);
int area () {return (x*y);}
}
public static void main(String[] args) {
Rectangle rect=new Rectangle(3,4);
}
在C++中,它调用编译器提供的0-arg默认构造函数
如果要使用2-arg构造函数,必须执行以下操作:-
Rectangle rect;
其中,必须显式提供2-arg构造函数,否则它将无法编译
现在,Java中的情况也是如此。如果您这样做:-
Rectangle rect(3, 4);
那么它可以,因为在这种情况下,编译器将提供一个默认的0ARG构造函数,如C++,但是当你的创建对象像:-< /P>
new Rectangle();
然后,您必须显式地为该类提供一个2-arg构造函数,否则它将无法编译,就像在第二个示例中那样,无法编译
另外,一旦您提供了一个参数化构造函数
,那么在这种情况下,编译器将不会提供默认构造函数。如果要使用0-arg构造函数,则必须显式提供0-arg构造函数。这在Java
和C++
现在,根据内存分配
,因为Java是平台独立的,所以int
类型的大小在所有平台上都是32位
。这与C++
不同,后者的数据类型大小取决于平台
有关各种类型分配的详细信息,请参阅
另附:-
我建议您通过以下链接了解Java类和对象的基础知识:-
32
或64
位用于:
new Rectangle(3, 4);
是在堆栈上保留的
然后,从堆中为以下各项分配32+32=64位
:
Rectangle rect
Java是一种独立于平台的语言,所有基元类型都有特定的大小
请参见此处:在java中,rect不是对象,而是指向
对象的引用
当你说新矩形(3,4)
它将在堆
中创建一个对象
,并返回该对象
的引用地址
,引用地址被分配给适当类型的变量,在您的情况下,该变量是矩形
矩形
resource另外,一旦提供了带参数的构造函数,如果希望类有一个默认(无参数)构造函数,则需要显式提供一个构造函数。@TedHopp。他补充道。谢谢:)当然,您的Java代码片段不是合法语法:)。但是java“新矩形(i,j)”基本上和C++“新矩形(i,j)”一样。
new Rectangle(3,4);