Integer的128陷阱

简介: Integer的128陷阱

128陷阱指的是,两个Integer数据类型(包装类)在一定范围内用 == 判断,会返回true。这个范围默认就是-128--127

之所以范围是-128--127,我们用int类型赋值给Integer时会自动调用Integer.valueOf()这个方法来赋值给Integer对象,是因为方法的源码中设置了一个Cache数组。

若在这个范围内Integer 变量指向的是这个数组里的一个元素。所以当用==判断的时候返回结果为true。

源码

cache数组的源码

相关文章
|
5月前
|
Java
【Java基础面试十】、何对Integer和Double类型判断相等?
这篇文章讨论了如何在Java中正确比较`Integer`和`Double`类型的值,指出不能直接使用`==`操作符比较不同类型,而应该将它们转换为相同的基本数据类型(如`double`)后进行比较。
【Java基础面试十】、何对Integer和Double类型判断相等?
|
5月前
|
Java
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
这篇文章解释了Java中`int`基本数据类型和其包装类`Integer`之间的区别,并指出在进行`==`运算时,`Integer`会拆箱为`int`类型,然后比较它们的值是否相等。
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
|
8月前
|
缓存
Integer对象范围(-128-127)之间(Integer. valueOf()方法)
Integer对象范围(-128-127)之间(Integer. valueOf()方法)
|
8月前
|
缓存 Java
什么是Integer128陷阱
什么是Integer128陷阱
|
8月前
|
缓存 算法 Java
“Integer 128陷阱”
“Integer 128陷阱”
踩坑-判断Integer相等
踩坑-判断Integer相等
|
Web App开发 存储 缓存
【译】缓存最佳实践 & max-age的陷阱
【译】缓存最佳实践 & max-age的陷阱
329 0
【译】缓存最佳实践 & max-age的陷阱
|
存储 缓存 Java
Java Integer 缓存特性(Integer最大/小值探究、整型的自动装箱)
Java Integer 缓存特性(Integer最大/小值探究、整型的自动装箱)
310 0
|
存储 缓存 Java
面试题系列第3篇:Integer等号判断的内幕,你可能不知道?
面试题系列第3篇:Integer等号判断的内幕,你可能不知道?
151 0
面试题系列第3篇:Integer等号判断的内幕,你可能不知道?
|
存储 缓存 Java
傻傻分不清?Integer、new Integer() 和 int 的面试题
傻分不清?Integer、new Integer() 和 int 的面试题
126 0
傻傻分不清?Integer、new Integer() 和 int 的面试题