黑马程序员技术交流社区

标题: Integer的运算问题,求大神解答…… [打印本页]

作者: Chans_宇    时间: 2015-4-23 00:49
标题: Integer的运算问题,求大神解答……
代码如,其运算结果是false和true实在想不明白,求解……
public class Test01 {
      public static void main(String[] args) {
          Integer i1=70;
          Integer i2=70;
          Integer i3=140;
          Integer i4=140;
        System.out.println(i3==i4);
        System.out.println(i3==(i1+i2));
    }
       
}


作者: q8387811    时间: 2015-4-23 00:55
装在容器里面了,你要使用或者比较大小麻烦转换出来。。。
因该你这样比较的是内存地址。。
作者: wtjohn    时间: 2015-4-23 01:00
简单说就是内存地址不一样,对于较小的整型,在装箱的时候是从常量池取值以节省内存(可以试一下127和128)
作者: woshixtdx    时间: 2015-4-23 02:41
表示挖牛角尖啊。
作者: Chans_宇    时间: 2015-4-23 10:42
看刘意老师的视频说,1~127的整数常量都是重byte常量池里调用的,超过这个范围的整数常量好像是生成在堆内存的,所以说i1和i2指向的是同一个地址引用,后面那打印输出的(i1+i2)其实只是做了拆箱的操作,并没赋值操作,所以它和i3==140是一样的……回去想了想,这么理解似乎说得通了……




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