Java中的构造函数和新操作符

Java中的构造函数和新操作符,java,Java,要从Java中的类Student创建新对象,我们通常使用以下语句 Student std = new Student(); 我已经读到new操作符通过在堆中分配内存空间来创建新对象,但是我也读到调用构造函数Student()创建它。 所以,这有点令人困惑。哪一个正在创建对象std?它是新操作符还是默认构造函数?使用与类同名的方法是合法的(尽管容易混淆),new消除了任何歧义new表示JVM应该为给定的类和参数列表调用,并返回初始化对象(在初始化方法的第一个(隐藏)参数中引用) Java的设计者

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

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

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


Java的设计者可能已经找到了另一种语法,但他们有一个设计目标,即任何时候在堆上分配内存时,都应该通过要求关键字
new
显式调用它。这可能看起来很奇怪,但大多数java的目标受众是C和C++程序员,他们怀疑垃圾收集,这是为了确保开发者没有知识就没有内存分配。p>
new
只是告诉编译器创建用于实例化对象的指令,而不是真正的运算符。一些如何?
new Student()
调用构造函数。你问的两件事实际上是同一件事。或多或少,
new
分配内存;构造函数初始化对象。