Java构造函数在调用时是返回对象还是对象的ID?

时间:2011-10-05 19:01:07

标签: java

我想知道Java中的构造函数是否返回了什么。我知道没有像'5'或“Hello World”这样的回报值。但是如果我们为它分配一个变量:

People person = new People();

那么返回对象或ID在逻辑上是否合理?存储器中存储的引用是分配给人的吗?

我现在正在考虑这个问题,因为我正在学习python,并希望将__new__方法连接到构造函数,然后将__init__连接到构造函数的主体(即初始值)。我的教授一直告诉我__new__不存在,所以我希望得到一个让事情变得清晰的答案。

5 个答案:

答案 0 :(得分:3)

在Java中,只有对象的基元和引用作为字段,参数和局部变量的类型。引用有点像ID,除非它可以随时改变而不需要知道何时发生。

引用更接近指针或对象索引的概念。即。它指的是一个记忆位置。

new绝对是Java中的关键字,所以说它不存在并不是很有意义。您可以说它在字节代码中没有一对一的映射,除了字节代码本身在虚拟机上运行,​​并且实际运行的机器无论如何都可能相当不同。也就是说,将字节代码视为“真正”发生的方式并没有多大意义。

答案 1 :(得分:1)

构造函数不是“正常”方法。并且必须使用运算符new和构造函数,然后您将引用该对象,因此这是指向内存中位置的指针(id)。

here is some explanation

  

构造函数声明看起来像方法声明 - 除了   他们使用类的名称,没有返回类型

答案 2 :(得分:0)

简答:没有

更多回答:“返回”某事的是new运算符。

当您创建类的新实例(通过new运算符)时,您必须向JVM提供两条信息:要实例化的类的名称以及构造所需的任何参数新对象(构造函数参数)。

为了实现这一点,java需要以下语法:

Type1 variableName = new Type2(parameter list);

在您的示例中:People person = new People(); People是名为person的引用的类型,是要实例化的对象的类型(即new People)。构造函数不需要参数(无参数构造函数或默认构造函数),因此参数列表为“()”。

答案 3 :(得分:0)

构造函数的返回类型是 Class 本身 您不能将它们视为void,但它保证在堆上分配内存并初始化成员字段,最后返回我们用作引用变量的新分配对象的地址。

答案 4 :(得分:-1)

根据我的说法,当构造函数与'new'关键字一起使用时,它会为该对象分配内存空间。

例如:在您的代码中People person = new People();

它会自动将新创建的对象'person'所需的空间分配到内存中。