Tôi có một vấn đề lớn để hiểu tại sao lớp trình bao bọc trong Java không hoạt động như một kiểu tham chiếu. Ví dụ:Tại sao lớp trình bao bọc trong Java không hoạt động như một kiểu tham chiếu?
Integer one = 10;
Integer two = one;
one = 20;
System.out.println(one);
System.out.println(two);
Kết quả sẽ là:
Tôi nghĩ rằng two
sẽ là 20 như trong ví dụ này, nơi tôi có thể tạo lớp của riêng tôi:
class OwnInteger {
private int integer;
public OwnInteger(int integer) {
this.integer = integer;
}
public int getInteger() {
return integer;
}
public void setInteger(int integer) {
this.integer = integer;
}
}
OwnInteger one = new OwnInteger(10);
OwnInteger two = one;
one.setInteger(20);
System.out.println(one.getInteger());
System.out.println(two.getInteger());
Vì vậy, câu hỏi, là bao gói Integer pper class đặc biệt? Tại sao nó hoạt động như tôi đã chỉ ra trong các ví dụ của tôi?
Có sự khác biệt lớn giữa 'one = 20;' và 'one.setInteger (20);', và nó không liên quan gì đến các lớp bao bọc. 'one = 20;' của đoạn đầu tiên sẽ tương đương với 'one = new OwnInteger (20);' trong đoạn thứ hai. – Eran
Các lớp này hoạt động chính xác như các loại tham chiếu, có thể là do chúng _are_ loại tham chiếu. Khi bạn trỏ một tham chiếu đến một đối tượng khác, bạn không thay đổi con trỏ khác. Các con trỏ độc lập. Nó chỉ thay đổi thành _object_ được hiển thị qua bất kỳ con trỏ nào đến cùng một _object_. Hãy nhớ rằng như JLS nói, Java "tài liệu tham khảo ... là con trỏ". –