通过上面的饼状图可以看出,大于128的整数值比较中,有一半的情况是值相等的,另一半情况是值不相等的。 总结 在Java中,对于整数值大于128的Integer对象比较,不能直接使用==来判断两个对象的值是否相等,而应该使用equals方法。这是因为大于128的整数值每次创建新的对象,对象引用不同。 通过本文的介绍和示例,希望读者...
通过翻看jdk源码,你会发现:如果要创建的 Integer 对象的值在 -128 到 127 之间,会从 IntegerCache 类中直接返回,否则才调用 new Integer方法创建。所以只要数值是正的Integer > 127,则会new一个新的对象。 数值 <= 127时会直接从Cache中获取到同一个对象。public static Integer valueOf(int i) { if...
1.如果Integer类型的两个数相等,如果范围在-128~127(默认),那么用“==”返回true,其余的范会false。 2.两个基本类型int进行相等比较,直接用==即可。 3.一个基本类型int和一个包装类型Integer比较,用==也可,比较时候,Integer类型做了拆箱操作。 4.Integer类型比较大小,要么调用Integer.intValue()转为基本类型用...
Integer b= 128; System.out.println(a== b); 打印值为false 因为: 在Java中,不应该以这种方式比较对象。当您像a == b那样比较它们时,您比较的是引用,而不是值 ,值比较应该使用equals方法 如果你问为什么128以下的整数会出现这种情况:Java使用池来处理小值。因此,128以下的所有整数不会创建新实例,而是使用...
奇怪的Java题:为什么128 == 128返回为false,而127 == 127会返回为true? 在回答这个问题之前,我们先来看看int和Integer的对比,一步步揭开问题的答案。 1. int与integer的基本使用对比 (1) Integer是int的包装类;int是基本数据类型; (2) Integer变量必须实例化后才能使用;int变量不需要; ...
大于127,小于-128会为false。这是因为默认情况下JVM会把 [-128,127]这个区间的Integer给缓存起来,当我们定义Integer的时候,如果位于这个区间,就不会去创建一个新的对象,而是返回缓存中的对象。所以位于该区间的Integer通过等于号判断会是相等的,因为是同一个对象。查看Integer源码,可以看到Integer缓存操作 再查看...
Integer i2 = 50; Integer i3 = 128; Integer i4 = 128; System.out.println(i1 == i2); System.out.println(i3 == i4); 1. 2. 3. 4. 5. 6. 针对以上结果,估计不少Java小伙伴会算错! 如果在项目中使用==对Integer进行比较,很容易掉坑。
class D { public static void main(String args[]) { Integer b2=127; Integer b3=127; System.out.println(b2==b3); } } 输出: true 注意:-128 到 127 之间的数字为真。 原文由 vipin k. 发布,翻译遵循 CC BY-SA 4.0 许可协议 java...
java在编译Integer x = yyy ;时,会翻译成为Integer x = Integer.valueOf(yyy)。而java API中对Integer类型的valueOf的定义如下,对于-128到127之间的数,会进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了。如果超过128就会重新new一个新对象 ...
一、在-128~127范围内的Integer对象 1、以 Integer x = value 的方式赋值,只是进行int原生数据类型的数值比较 2、使用new操作创建新对象 ...