新运算符如何创建新对象?

时间:2017-09-23 07:25:45

标签: java

我刚刚开始学习Java,我对用于创建新对象的语法感到有些困惑。

采取以下措施:

SomeClass someObject = new SomeClass(1, 2, 3);

new之后的语法究竟是什么?是构造函数调用本身还是只是带有一些参数的类名? new是否会查看它并知道根据这些参数调用哪个构造函数,或构造函数调用本身是SomeClass(1, 2, 3)

我想知道创建someObject时的步骤以及new的角色是什么。

SomeClass(1, 2, 3)实际构造函数调用同一行之后,我不明白...... new是什么?或者稍后由new调用?

更新

我混淆的根源可能是new背后使用的术语。事实证明,new根本不是运营商。 new实际上是一个关键字。这对我来说更有意义。

这回答了我的问题:Why is new called an operator in Java?

2 个答案:

答案 0 :(得分:1)

new,指定的Type(SomeClass),括号()和可能的参数等是一个表达式的一部分,根据JLS" {{3} }&#34 ;.

因此将new与表达式的各个部分分开是没有意义的。

(但构造函数的参数是在内存分配之后但在调用构造函数之前计算的。)

答案 1 :(得分:0)

是。它确实调用了对象的构造函数。 实例化一个,如Object creation中所述: -

  

new运算符通过为new分配内存来实例化一个类   对象并返回对该内存的引用。新的运营商也   调用对象构造函数。

new运算符需要一个后缀参数:对构造函数的调用。构造函数的名称提供了要实例化的类的名称。