Java篇
疑问:
为什么在以下代码中,一个结果为true,而另一个则为false?文章来源:https://www.toymoban.com/news/detail-826296.html
Integer int1 = 127;
Integer int2 = 127;
System.out.println(int1 == int2); //true
Integer int3 = 128;
Integer int4 = 128;
System.out.println(int3 == int4); //false
解答:
- 因为 Java 默认会比较数据在 JVM 堆中的地址,而 JVM 会将 Integer 转成 int 来进行比较,恰巧在 Integer 类中提供了内部静态类 IntegerCache 用来自动拆箱和装箱,数值范围为
-128 ~ 127
。 - 所以当比较的值在此区域时,Java 不会创建新对象,两者相等。
- 当比较的值不在此区域内时,Java 会分别创建新的对象,所以两者不相等。
结论
我们应尽力使用.equals()
去比较“对象型数据”,避免使用==
时出现上述错误。文章来源地址https://www.toymoban.com/news/detail-826296.html
到了这里,关于Integer类型的比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!