thể trùng lặp:
Inconsistent behavior on java's ==
Integer wrapper objects share the same instances only within the value 127?java == cho Integer
tôi đã tìm thấy các hành vi sau đây == cho các đối tượng Integer và tôi không hiểu nó. (Tôi cũng nhận thức được rằng ta nên sử dụng tương đương để so sánh như vậy, nhưng tôi đang học cho OCPJP ...)
On ngắn, == công trình như mong đợi cho 1000, nhưng không phải cho 10
Cựu đoạn mã là:
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
và nó cư xử như người ta mong đợi:
different objects
meaningfully equal
sau đó mặc dù:
Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
có đầu ra sau đây:
same object
meaningfully equal
Ai đó có thể vui lòng giải thích lý do tại sao điều này xảy ra?
BTW Hãy thử với '-XX: + AggressiveOpts' và là người đầu tiên sẽ cư xử như thứ hai, như nó làm tăng kích thước của bộ đệm Integer. ;) –