Tôi có đoạn mã sau:So sánh Integer đối tượng
public class Test {
public static void main(String[] args) {
Integer alpha = new Integer(1);
Integer foo = new Integer(1);
if(alpha == foo) {
System.out.println("1. true");
}
if(alpha.equals(foo)) {
System.out.println("2. true");
}
}
}
Kết quả như sau:
2. true
Tuy nhiên thay đổi loại của một Integer object
để int
sẽ sản xuất một sản lượng khác nhau, ví dụ:
public class Test {
public static void main(String[] args) {
Integer alpha = new Integer(1);
int foo = 1;
if(alpha == foo) {
System.out.println("1. true");
}
if(alpha.equals(foo)) {
System.out.println("2. true");
}
}
}
Kết quả mới:
1. true
2. true
Làm sao điều này có thể như vậy? Tại sao mã đầu ra ví dụ đầu tiên không phải là 1. true
?
Bạn có chắc chắn rằng đầu ra đầu tiên không phải là 2. đúng không? Nếu không, không có gì có ý nghĩa. – ILMTitan
Có, xin lỗi, định dạng đã thay đổi từ 2 thành 1. –
Có thể trùng lặp: [Khi so sánh hai số nguyên trong Java, tính năng tự động hủy hộp thoại xuất hiện?] (Http://stackoverflow.com/q/1514910/1164465) –