java Integer == 比较的小问题

示例代码:

@Test
    public void testEquals() {
        
        Integer a = 127;
        Integer b = 127;
        
        if(a == b) {
            System.out.println(true);
        } else {
            System.out.println(false);
        }
        
        a = 128;
        b = 128;
        
        if(a == b) {
            System.out.println(true);
        } else {
            System.out.println(false);
        }
        
        //打印结果:
        //true 
        //false
    }

找到的相关解释如下:

因为java在执行包装类的自动装箱功能时,对于-128到127之间的整数被装箱为Interger对象后,该对象会被另外一个对该证书进行自动装箱的操作重复使用,也就是说多次对同一个-128到127范围内的整数进行Integer装箱的操作,使用的都是第一次进行装箱操作时生成的对象。而对于大于127的整数,就会new一个新对象,两个对象使用==比较由于地址不同所以返回false。

posted @ 2014-02-08 17:38  于辰  阅读(193)  评论(0编辑  收藏  举报