黑马程序员技术交流社区
标题:
自动装箱问题
[打印本页]
作者:
公子-醉香
时间:
2013-12-16 21:39
标题:
自动装箱问题
本帖最后由 公子-醉香 于 2013-12-16 21:41 编辑
public class AutoBox {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//自动装箱,自动把一个int基本数据类型装成了一个Internet类型,并赋给了引用变量iObj
Integer iObj=3;
System.out.println(iObj+12)
Integer i1=13;
Integer i2=13;
复制代码
i1和i2是同一个对象吗?如果不是,该怎么区分呢?
作者:
ISAI
时间:
2013-12-16 22:01
是的,只要数值小于127就不会开辟新的空间。
作者:
kongling
时间:
2013-12-17 00:01
源代码中
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
复制代码
ava在编译的时候 Integer a = 3; 被翻译成-> Integer a = Integer.valueOf(3); ,对-128~127这256个值做了缓存放到IntegerCache做了缓存,对于上一次已经创建的,再使用的时候就不会再创建了。
但有的时候:
Integer integer5=3;
Integer integer6=Integer.valueOf(3);
integer5++;
System.out.println(integer5==integer6);
复制代码
返回:false
是因为a++的时候是创建了另外一个对象
作者:
为梦想而活着
时间:
2014-7-26 10:54
自动装箱,自动把一个int基本数据类型装成了一个Internet类型,并赋给了引用变量 ,应该是Integer类型吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2