Olası yinelenen için: Ben tamsayı nesneler için aşağıdaki == davranış bulduk ve bunu anlamak için başarısız
Inconsistent behavior on java's ==
Integer wrapper objects share the same instances only within the value 127?java == Tamsayı
. (Böyle karşılaştırmalar için ise bir kullanması gerektiğini farkındayım, ama ben OCPJP için çalışıyorum ...) kısa On
, == 1000 için beklenen çalışmaları olarak değil, 10.
eski
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
ve bir beklendiği gibi davranır: kod parçası olmasına rağmen
different objects
meaningfully equal
sonraki için:
Bu neden oluyorsame object
meaningfully equal
Birisi lütfen açıklayabilir:
Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
aşağıdaki çıkışa sahiptir?
BTW '-XX ile deneyin: + AggressiveOpts' ve ilk bir saniye olarak davranacaktır gibi Tamsayı önbelleğinin boyutunu artırır. ;) –