标题: 关于Integer的问题 [打印本页] 作者: 李敏 时间: 2012-4-11 13:51 标题: 关于Integer的问题 Integer a = 123;
Integer b = 123;
Integer c = 128;
Integer d = 128;
Integer e = new Integer(123);
Integer f = new Integer(123);
------> a==b ---->true
c==d ---->false
e==f ---->false
能给我解释一下道里面的原理。。。。?作者: 黑马张平 时间: 2012-4-11 14:08
Integer a = 123;
Integer b = 123;
-128<a<127时 因为数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间。节省内存空间。
所以a==b ---->true
Integer c = 128;
Integer d = 128;
128 数值不在byte范围内容,在内存中是2个对象,
所以c==d ---->false
但Integer e = new Integer(123);
Integer f = new Integer(123);
虽然你传的是byte范围内容,但 new Integer(),是在栈内存中开辟一新空间,你new 2次,就是2个不同对象。
所以是e==f ---->false
作者: 李敏 时间: 2012-4-11 14:11
黑马张平 发表于 2012-4-11 14:08
Integer a = 123;
Integer b = 123;
-128false