黑马程序员技术交流社区
标题:
关于基本数据类型包装类的问题。
[打印本页]
作者:
李涛兴
时间:
2012-11-17 23:49
标题:
关于基本数据类型包装类的问题。
本帖最后由 李涛兴 于 2012-11-18 11:30 编辑
class IntegerDemo
{
public static void main(String[] args)
{
Integer m=128;
Integer n=128;
Integer a=127;
Integer b=127;
System.out.println("m==n: "+(m==n));
System.out.println("a==b: "+(a==b));
}
}
运行结果
m==n: false
a==b: true
复制代码
在1.5版本的JDK中运行结果有这种差别,是因为定义的数值没有超过byte的数值范围内,而使a,b指向同一个对象。
请问为什么没有超过byte这个数值,就会指向同一个对象呢?是因为byte的数值范围是-128~127这个数值之间,byte就可以代替使用int类型赋值吗?
作者:
张利
时间:
2012-11-17 23:57
因为byte型数据比较小,操作频繁,因此对于这个数据有一个缓存区,第一次出现创建对象后,第二次再次创建对象的时候直接指向了缓存区中的对象,因为指向的是同一个对象,所以·-128到127内是会出现true的结果;而超出了这个范围的,就是正常的创建对象了,创建了两个对象,因此是false
作者:
森仔
时间:
2012-11-18 00:02
Integer在对象池中只保存从-128~127之间的整数
超出了就创建新对象
m==n 比较的 m 和n 的引用,所以是false
作者:
李涛兴
时间:
2012-11-18 11:34
感谢上面的同学给的见解,希望有同学给出更详细点的讲解,感激...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2