黑马程序员技术交流社区
标题:
深入Integer
[打印本页]
作者:
liumeng
时间:
2012-2-28 10:01
标题:
深入Integer
Integer a=100;
Integer b=100;
if(a==b)
{
System.out.println("a==b");
}else
{
System.out.println("a!=b");
}
当a和b是100时候输出a==b
Integer a=200;
Integer b=200;
if(a==b)
{
System.out.println("a==b");
}else
{
System.out.println("a!=b");
}
但是当a和b是200是就输出a!=b
这是为什么?
作者:
张开开
时间:
2012-2-28 10:10
这是因为Integer在创建对象时,如果其值在范围(-128--127)之间时,会将值放入缓冲池,如果下次再创建这个值Integer对象时。就直接用这个缓冲池中的引用了,而如果大于这个范围,则创建一个新的对象。
作者:
田啸
时间:
2012-2-28 10:18
这个应该算java1.5新特性,a和b指向了同一个Integer对象。 当数值在byte范围内,对于新特性,如果该数值已经存在则不会在开辟新的空间。byte范围128 ~~~~ -127
如:Integer a = 128;
Integer b = 128;
System.out.println(a==b);
Integer x = 127;
Integer y = 127;
System.out.println(x==y);
a==b 是false ,x==y 是true
作者:
liumeng
时间:
2012-2-28 10:25
哥你差了是-128到127
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2