A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴华二 中级黑马   /  2012-3-25 15:19  /  1659 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class IntegerTest {  
        public static void main(String[] args) {   

                objPoolTest();   
               
}                  
        public static void objPoolTest() {   
                        Integer i1 = 40;           
                        Integer i2 = 40;           
                        Integer i3 = 0;           
                        Integer i4 = new Integer(40);            
                        Integer i5 = new Integer(40);           
                        Integer i6 = new Integer(0);                          
                        System.out.println("i1=i2\t" + (i1 == i2));            
                        System.out.println("i1=i2+i3\t" + (i1 == i2 + i3));            
                        System.out.println("i4=i5\t" + (i4 == i5));           
                        System.out.println("i4=i5+i6\t" + (i4 == i5 + i6));                             
                        System.out.println();               
                }

}

输出结果如下:
i1=i2 true
i1=i2+i3 true
i4=i5 false
i4=i5+i6 true
可是我看到i4=i5+i6的时候,为什么输出的结果是true呢?不是false,而i4=i5又为false,太不解了...知道的朋友帮忙解决一下。

1 个回复

倒序浏览
本帖最后由 万正 于 2012-3-25 15:25 编辑

i4==i5+i6相当于40==40+0,都是int类型了,因为两个对象不能相加,自动拆箱了;
i4==i5是两个对象在比较,所以是false。我是这么理解的~不一定准确~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马