关于new Integer() 、Integer.valueOf()、和int装箱的比较

189 阅读1分钟

直接上代码:

 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 会分配新的地址,其他都是用缓存中已有的值。