Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java基础:创建类对象_Java_C++ - Fatal编程技术网

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

在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 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);