在有些JVM中,Integer类型从-128到127的范围内会放回用一个对象,所以用”==“ 的时候,同样大小的Ingeter俩个对象会返回TRUE。而超过这个范围,就可能返回False了。
Integer i1 = 300;
Integer i2 = 300;
if (i1 == i2)
System.out.println("i1 and i2 is equal");
else
System.out.println("i1 and i2 is not equal ");
运行这段代码时,可能打印出的结果是 i1 and i2 is not equal 。因为JVM没有对这俩个对象自动解包,所以i1和i2是俩个不同的对象,所以它们不相同。又例如:
Integer i1 = 100;
Integer i2 = 100;
if (i1 == i2)
System.out.println("i1 and i2 is equal");
else
System.out.println("i1 and i2 is not equal ");
这时你运行代码则打印出 ”i1 and i2 is equal“ 这是为什么呢? 因为JVM对Int值从-128 到127范围的值会保存进行缓存保存,所以i1和i2实际上是同一个对象。
但这也不是绝对的,有一些JVM对Integer对象的保存会做些优化,所以会出现上面结果。所以我们要避免这种情况的发生,用equals()方法来比较Integer的大小。
分享到:
相关推荐
java中equals和==的区别.doc java中equals和==的区别.doc
能够加强对java中equals与==区别的理解。
详细介绍和讲解Java中的==和equals区别
Java中的==与equals()实例方法Java中测试两个变量是否相等的方法有两个,一个是用==运算符,另一个就是object类提供的equals()方法。2
常见java面试中的陷阱 不错的java面试中的陷阱
Java语言是sun公司的开发成果,他的主要特点是可以执行强,与平台的无关性使他的实用性更强。但是Java中的==与equal是有区别的。
java中equals和==的区别-5页.pdf
Java 中equals和==的区别
java陷阱常见面试题,包含java基础陷阱 java客户端陷阱 java服务器陷阱 等的讲解 和java常见面试题
java中equals和==的区别.pdf
通过例子详细解释java中equals和==区别。实例丰富,适合初学者,便于理解,
java中equals和==的比较.pdf
java中equals和==的区别文.pdf
java中equals和==的比较文.pdf
简单介绍java中的“==”和equals
主要介绍了java 中equals和==的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧