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