我想知道Java中的构造函数是否返回了什么。我知道没有像'5'或“Hello World”这样的回报值。但是如果我们为它分配一个变量:
People person = new People();
那么返回对象或ID在逻辑上是否合理?存储器中存储的引用是分配给人的吗?
我现在正在考虑这个问题,因为我正在学习python,并希望将__new__
方法连接到构造函数,然后将__init__
连接到构造函数的主体(即初始值)。我的教授一直告诉我__new__
不存在,所以我希望得到一个让事情变得清晰的答案。
答案 0 :(得分:3)
在Java中,只有对象的基元和引用作为字段,参数和局部变量的类型。引用有点像ID,除非它可以随时改变而不需要知道何时发生。
引用更接近指针或对象索引的概念。即。它指的是一个记忆位置。
new
绝对是Java中的关键字,所以说它不存在并不是很有意义。您可以说它在字节代码中没有一对一的映射,除了字节代码本身在虚拟机上运行,并且实际运行的机器无论如何都可能相当不同。也就是说,将字节代码视为“真正”发生的方式并没有多大意义。
答案 1 :(得分:1)
构造函数不是“正常”方法。并且必须使用运算符new
和构造函数,然后您将引用该对象,因此这是指向内存中位置的指针(id)。
构造函数声明看起来像方法声明 - 除了 他们使用类的名称,没有返回类型
答案 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'所需的空间分配到内存中。