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

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

 Student std = new Student(); 

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

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

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