Integer的intValue()方法


Integer n1 = 123;
Integer n2 = 123;
Integer n3 = 128;
Integer n4 = 128;
System.out.println(n1 == n2);// true
System.out.println(n3 == n4);// false
System.out.println(n3.intValue()==n4.intValue());// true
System.out.println(128==n3);// true
System.out.println(128==n4);// true
// 對象的hashcode值
System.out.println(System.identityHashCode(n1));// 366712642
System.out.println(System.identityHashCode(n2));// 366712642
System.out.println(System.identityHashCode(n3));// 1829164700
System.out.println(System.identityHashCode(n4));// 2018699554

為什么 n3==n4  是false呢,因為Integer 對象是在 Integer.IntegerCache 中產生的 ,而 -128- 127的值已經被緩存了,當新的Integer對象在此區間時,會被復用;不在此區間時會在堆上產生新的對象。所以,n1  n2  的hashcode一樣的,而n3 、n4  的hashcode 是不一樣的

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM