Java 自动装箱和缓存机制:Integer 比较结果分析
Java 自动装箱和缓存机制:Integer 比较结果分析
以下代码展示了 Java 中 Integer 类型自动装箱和缓存机制对比较运算符 '==' 的影响:
public class Test02 {
public static void main(String[] args) {
Integer i1=127;
Integer i2=127;
System.out.println(i1==i2);
Integer i3=128;
Integer i4=128;
System.out.println(i3==i4);
}
}
输出结果为:
true
false
原因解释:
Java 在自动装箱时会对 -128 到 127 之间的整数进行缓存,即如果装箱的是这个范围内的整数,会直接从缓存中取出对应的 Integer 对象,而不是新创建一个对象。
- 因此,
i1和i2的值相同且在范围内,所以它们引用的是同一个对象,i1==i2的结果为true。 - 而
i3和i4的值都不在缓存范围内,所以会分别创建两个不同的对象,i3==i4的结果为false。
总结:
在使用 '==' 比较 Integer 对象时,需要注意自动装箱和缓存机制的影响,尤其是在比较数值超过 -128 到 127 范围的 Integer 对象时,应该使用 equals() 方法进行比较,以避免出现不一致的结果。
原文地址: https://www.cveoy.top/t/topic/nqsc 著作权归作者所有。请勿转载和采集!