整数缓存
来源:互联网 发布:q宠大乐斗刷战斗力软件 编辑:程序博客网 时间:2024/06/06 13:11
废话就不多说,直接看代码
运行结果:
根据我们所学知识,==是对于对象内存地址的比较,二者必须相同才能返回true,否则返回false。那么上面的这段代码为何返回值都是true呢?
下面我们再来看看另外一段代码,稍后再做解释。
运行结果:
看完这段代码,我们发现,a和b的值只是增加了1,但是结果却发生了变化。a==b的结果是false,这是为什么呢?
在这里我们需要了解自动装箱,也就是java编译器把原始类型自动转换为封装类型。在上面的代码
Integer a=128;就相当于Integer a=Integer.valueOf(128);那么接下来,我们来看下这个方法
从这段代码中,可以看见,如果i的值在IntegerCache的最低位和最高位之间,那么就会返回IntegerCache中的cache数组中的值。接下来就是看这个low、high以及cache数组中的值。
从上面的代码中,我们可以看到,low的值是-128,high的值是127。cache数组里面存了-128至127之间的所有整数。所以在Integer a=127这个过程中,装箱操作知识从缓存中取了一个数出来,Integer b=127也是同样 的道理,取的都是缓存中的值,所以这是a==b返回值为true。一旦a和b的值在[-128,-127]这个区间外,就会有新的对象创建,这时,由于a和b内存地址不一样,所以返回值为false。至于a和c的比较,由于c是基本数据类型,在比较的时候只会比较值是否相等,所以返回值为true。
0 0
- 整数缓存
- 整数缓存
- Python整数的缓存
- python中整数的缓存机制
- Java学习篇之---小整数缓存机制
- c++实现数据缓存(包含存储定长变长整数)
- 通过反射验证IntegerCache缓存整数的机制
- 整数
- 整数
- 整数
- 整数
- 整数
- 整数
- 整数
- 整数
- 整数
- Java中Integer的valueOf方法,-128到127的整数将被缓存
- 缓存
- numpy.random.RandomState()和numpy.random.seed()解读
- BZOJ 3667 Pollard-rho &Miller-Rabin
- 对视频序列的 运动检测 目标跟踪(运动目标的检测与跟踪)
- vagrant中的一些名字
- 8.环境搭建-spark客户端安装
- 整数缓存
- JavaWeb中的相对路径和绝对路径
- HEXO + GIT 管理静态博客
- UIPageViewController
- Binocular Disparity map 双目视差图
- ecognition中的对象特征——Shape 转贴
- Object-C 工厂方法
- vim复制多行文本(多行编辑)的方法
- stl的一些用法,队列