首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java基础知识:创建类对象

Java基础知识:创建类对象
EN

Stack Overflow用户
提问于 2012-10-25 12:45:50
回答 3查看 284关注 0票数 1

在C++中:

代码语言:javascript
复制
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);
}

在Java中:

代码语言:javascript
复制
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++中,编译器会创建rect对象并预留4字节的内存。我想知道Java是如何创建对象的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-25 12:52:31

当你这样做的时候:

代码语言:javascript
复制
Rectangle rect;

C++中,它调用编译器提供的0参数默认构造函数。

如果你想使用2-arg构造函数,你必须这样做:

代码语言:javascript
复制
Rectangle rect(3, 4);

其中,您必须显式地提供一个2-arg构造函数,否则它将无法编译。

现在,Java中也出现了类似的情况。如果你这样做了:-

代码语言:javascript
复制
new Rectangle();

这样就可以了,因为在这种情况下,编译器会为你提供一个默认的0-arg构造函数,就像在C++中一样,但是当你创建像这样的对象时:

代码语言:javascript
复制
new Rectangle(3, 4);

然后你必须显式地给这个类提供一个2-arg构造函数,否则它不会编译,就像你的第二个例子一样,它不会编译。

而且,一旦你提供了一个parameterized constructor,那么在这种情况下,编译器将不会提供默认的构造函数。如果要使用0-arg构造函数,则必须显式提供该构造函数。这在JavaC++中都足够了

现在,根据memory allocation所关注的,由于Java是独立于平台的,所以int类型的大小在所有平台上都是32 bits。这与数据类型大小与平台相关的C++形成了鲜明对比。

有关各种类型分配的详细信息,请参阅。

P.S.:-

我建议你通过下面的链接,了解Java类和对象的基础知识:

  • http://docs.oracle.com/javase/tutorial/java/javaOO/index.html
票数 3
EN

Stack Overflow用户

发布于 2012-10-25 12:53:42

用于以下各项的3264位:

代码语言:javascript
复制
Rectangle rect

在堆栈上是保留的。

然后,从堆中为以下对象分配32 + 32 = 64 bits

代码语言:javascript
复制
new Rectangle(3,4);

Java是一种独立于平台的语言,所有的原始类型都有特定的大小。

请查看此处:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

票数 0
EN

Stack Overflow用户

发布于 2012-10-25 13:08:48

在java中,rect不是一个对象,而是一个指向objectreference

当您说new Rectangle(3,4);时,它将在heap中创建一个object并返回该reference addressobject,并且引用地址是对适当类型的变量的assigned,在本例中是Rectangle rect

资源creating object in java

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13061710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档