Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 - Fatal编程技术网

Java 新操作符如何创建新对象?

Java 新操作符如何创建新对象?,java,Java,我刚刚开始学习Java,对用于创建新对象的语法有点困惑 采取以下行动: SomeClass someObject = new SomeClass(1, 2, 3); new后面的语法到底是什么?是构造函数本身调用还是只是带有一些参数的类名?new是否了解这一点并知道基于这些参数调用什么构造函数,或者SomeClass1、2、3是构造函数本身调用的 我想知道创建someObject时遵循哪些步骤以及new的角色是什么 我不明白的是。。。new之后的SomeClass1、2、3是同一行上的实际构造

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

采取以下行动:

SomeClass someObject = new SomeClass(1, 2, 3);
new后面的语法到底是什么?是构造函数本身调用还是只是带有一些参数的类名?new是否了解这一点并知道基于这些参数调用什么构造函数,或者SomeClass1、2、3是构造函数本身调用的

我想知道创建someObject时遵循哪些步骤以及new的角色是什么

我不明白的是。。。new之后的SomeClass1、2、3是同一行上的实际构造函数调用吗?还是后来又被纽约人叫来了

更新:

我感到困惑的原因可能是在新技术背后使用的术语。事实证明,new根本不是运营商。new实际上是一个关键字。这对我来说现在更有意义了


这回答了我的问题:

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

new操作符通过为新类分配内存来实例化类 对象并返回对该内存的引用。新的接线员也 调用对象构造函数

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

根据JLS,新的、指定的类型SomeClass、括号和可能的参数等是一个表达式的一部分

因此,将新表达式和表达式的各个部分分开是没有意义的


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

这在任何教程、参考书、文档等中都有大量的记录。Java教程说:新操作符通过为新对象分配内存并返回对该内存的引用来实例化类。新操作符还调用对象构造函数。我编辑了我的问题以澄清我的困惑。我之前的引用和提供的答案都很清楚。所以说得清楚,SomeClass1,2,3只是语法,但构造函数实际上是在以后调用的?你不应该真的想到new和SomeClass1,2,3作为这里的两个部分,它们各自都不是有效的,语法是新的SomeClass1,2,3作为一个整体,参数不是构造函数调用表达式本身,对吗?只是作为类实例创建表达式一部分使用的语法?@AsadMoosvi:我不确定你的语法是什么意思,但new SomeClass1、2、3是一个类实例创建表达式。如果你进一步分析它们,你可以说new是一个关键字,根据JLS等等,它是一个a类TypeDeclSpecifier。