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 是不一样的

 

 

相关文章:

  • 2021-06-02
  • 2021-09-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-18
  • 2021-06-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
  • 2022-12-23
  • 2021-12-18
相关资源
相似解决方案