Tôi không chắc chắn cách hoạt động của từ khóa new
trong Java. Có chắc chắn rằng mỗi khi tôi sử dụng từ khóa new
, một đối tượng mới sẽ được tạo trên heap?Vai trò của từ khóa mới trong Java
Tôi đã nghi ngờ điều này khi tôi đang học sau example-
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 "); }
}
Dòng Mixer m3 = new Mixer(m2);
gọi một constructor mà không tạo ra bất kỳ đối tượng mới. Vì vậy, nó là không có đối tượng mới được tạo ra?
Ngoài ra, Biến nào đề cập đến đối tượng nào ở cuối chương trình, tức là cho đến khi chúng tôi nhận được NullPointerExcetion
cho biến m5
.
Điều gì khiến bạn nghĩ rằng nó không tạo ra một đối tượng mới? –
http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html –
@ DaveNewton- Nếu đối tượng mới được tạo thì biến nào đang đề cập đến biến đó? –