黑马程序员技术交流社区

标题: Integer的一些算法问题! [打印本页]

作者: 吴华二    时间: 2012-3-25 15:19
标题: Integer的一些算法问题!
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,太不解了...知道的朋友帮忙解决一下。
作者: 万正    时间: 2012-3-25 15:23
本帖最后由 万正 于 2012-3-25 15:25 编辑

i4==i5+i6相当于40==40+0,都是int类型了,因为两个对象不能相加,自动拆箱了;
i4==i5是两个对象在比较,所以是false。我是这么理解的~不一定准确~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2