我不确定new
关键字在 Java 中的行为方式。确定每次我使用new
关键字时,都会在堆上创建一个新对象吗?
我在学习以下示例时遇到了这个疑问-
class Mixer {
Mixer() { }
Mixer(Mixer m) { m1 = m; }
Mixer m1;
public static void main(String[] args) {
Mixer m2 = new Mixer();
Mixer m3 = new Mixer(m2); // Does it create any new mixer object?
m3.go();
Mixer m4 = m3.m1; m4.go();
Mixer m5 = m2.m1; m5.go();
}
void go() { System.out.print("hi "); }
}
该行Mixer m3 = new Mixer(m2);
调用不创建任何新对象的构造函数。那么,是否没有创建新对象?
此外,Which variable 指的是程序末尾的哪个对象,即直到我们得到NullPointerExcetion
variable m5
。