黑马程序员技术交流社区
标题:
请教一下
[打印本页]
作者:
疯子的昨天
时间:
2014-1-21 17:55
标题:
请教一下
看张老师的 JAVA基础加强看到数据的自动装箱与拆箱。但是在整数上好像只支持-128到127,即只支持一个字节的范围内。对两个相同数据进行封装会显示true。我想问下为什么数据弄大一些就不支持了?
作者:
大大老伴要跪IT
时间:
2014-1-21 18:14
在byte范围内的值,自动装箱时是直接赋值的。超过这个范围,自动装箱是要在堆内存中创建对象。引用地址自然就不一样的了。所以就false了。
作者:
猎鹰tianya
时间:
2014-1-21 18:49
本帖最后由 猎鹰tianya 于 2014-1-21 18:55 编辑
据说,这是一种设计模式:享元模式
简单一句话理解:分享细粒度数据!
可能Java认为,这种小的数据用到几率大。
所以为了提高效率,这样的对象创建一次后,会被缓存起来,下次用的时候直接拿,不会再次创建。
至于为什么只缓存【-128-127】这个范围内的数,这是因为,,,,,,,源代码里是这么规定的啊。
你可以去JDK安装目录下找到src.zip,用压缩软件打开,然后找到Integer的源码,一探究竟。
截图.png
(39.75 KB, 下载次数: 16)
下载附件
2014-1-21 18:39 上传
或者,在eclipse中,Ctrl+单击-->打开源文件:
尽管,看不懂,但可以找到专门用于缓冲的这个内部类:
IntegerCache
截图2.png
(218.42 KB, 下载次数: 12)
下载附件
2014-1-21 18:54 上传
作者:
疯子的昨天
时间:
2014-1-22 13:46
谢谢。~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2