黑马程序员技术交流社区
标题:
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