java里Integer类在-128和127之间为啥能直接用==比较,好像还只能在自动装箱的时候是吗?求详解,谢谢啦!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里Integer类在-128和127之间为啥能直接用==比较,好像还只能在自动装箱的时候是吗?求详解,谢谢啦!相关的知识,希望对你有一定的参考价值。

因为Integer实现的时候 对于-128 到127之间的值会做缓存处理
比如 Integer i=100,j=100;
那么j实际上就是指向的i,因为i缓存了

如果Integer i=200,j=200;
这时候不会缓存,会新建一个对象200,

所以第一次 i==j为真
第二次 i==j为假
参考技术A ==是比较数值的。如果是Integer实例,那就是比较他们的内存地址的整数值。

Integer 是啥类型?

参考技术A Integer是引用类型
Integer
类在对象中包装了一个基本类型
int
的值。
Integer
类型的对象包含一个
int
类型的字段。
此外,该类提供了多个方法,能在
int
类型和
String
类型之间互相转换,还提供了处理
int
类型时非常有用的其他一些常量和方法。

以上是关于java里Integer类在-128和127之间为啥能直接用==比较,好像还只能在自动装箱的时候是吗?求详解,谢谢啦!的主要内容,如果未能解决你的问题,请参考以下文章

Java Integer(-128~127)值的==和equals比较产生的思考

java面试题

Integer a= 127 与 Integer b = 127(转)

Integer的缓存机制

Java第二阶段之常用类

JAVA里Integer是啥意思