黑马程序员技术交流社区

标题: 基本数据类型对象包装类的一个问题 [打印本页]

作者: csu050416    时间: 2015-5-5 13:40
标题: 基本数据类型对象包装类的一个问题
Integer x = 128;
Integer y = 128;
x==y的返回值是false。
Integer m = 127;
Integer n = 127;
m==n的返回值是true。
为什么?     


作者: 邹园倚    时间: 2015-5-5 15:14
不可能吧?
作者: 挥斥方遒    时间: 2015-5-5 17:41
邹园倚 发表于 2015-5-5 15:14
不可能吧?

这个我试过,是真的。然后突然想到毕姥爷在视频中讲到过一个名词常量池,包含127不包含128的概念,但不知道是哪一集了,我又百度了一下常量池。八种基本类型的包装类和对象池,那里说的很明确。有兴趣可以自己好好看看。。。。意思就是常量池有127,但是没有128。。那么就是128赋值时因为常量池中没有128对象,所以它开辟了两个128的Integer对象,等同于new了两个对象。并分别指向x和y。俩128的内存地址是不一样的,所以是false。这个应该都理解。。但是定义m和n的时候,系统发现内存中本来就有Integer类型的常量127,所以m和n都指向了内存中的同一个对象。。
作者: 陈国安    时间: 2015-5-5 18:05
                Integer x = 127;
                Integer y = (int)Byte.MAX_VALUE;
                System.out.println(x==y);
楼上说的常量池应该是真的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2