Java中的构造函数和新运算符

Clo*_*loo 6 java

要从StudentJava中的类创建新对象,我们通常使用以下语句

Student std = new Student();
Run Code Online (Sandbox Code Playgroud)

我已经读过new运算符通过在堆中分配内存空间来创建新对象,但是我还读到了调用构造函数Student()创建它.所以,它有点令人困惑.哪一个正在创建对象std?它是new运算符还是默认构造函数?

Nat*_*hes 5

使用与类同名的方法是合法的(尽管令人困惑),new消除了任何歧义。new表示 JVM 应该为给定的类和参数列表调用实例初始化方法,并返回初始化的对象(在初始化方法的第一个(隐藏)参数中引用)。

Java 的设计者可能已经找到了另一种语法,但他们的设计目标是,任何时候在堆上分配内存时都应该通过要求关键字 显式调用它new。这现在可能看起来很奇怪,但 Java 的大多数目标受众是对垃圾收集持怀疑态度的 C 和 C++ 程序员,这是为了确保开发人员不会在他们不知情的情况下分配内存。