Integer i1= new Integer(1); Integer i2= new Integer(1); Integer i3=i1+i2; Integer i4=2; System.out.println(i1==i2);//false System.out.println(i3==i4);//true为什么i1==i2是false,但是i3==i4是true呢?
1 回答
已采纳
慕粉3233872
TA贡献70条经验 获得超29个赞
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
new Integer(1) 和Integer a = 1不同,前者会创建新的对象,存储在堆中,而后者如果在-128到127的范围内,不会创建新的对象,而是从IntegerCache中获取。
添加回答
举报
0/150
提交
取消