直接上代码:
public static void main(String[] args) {
Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(System.identityHashCode(x));
System.out.println(System.identityHashCode(y));
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(System.identityHashCode(z));
System.out.println(System.identityHashCode(k));
Integer i = 123;
Integer j = 123;
System.out.println(System.identityHashCode(i));
System.out.println(System.identityHashCode(j));
}
运行结果:
1163157884
1956725890
356573597
356573597
356573597
356573597
总结:
new 会分配新的地址,其他都是用缓存中已有的值。