标签:
在一些Wrapper对象中, 例如Integer,在范围-128 到127之间如果通过“==”进行比较得到的返回值是true的话,那么他们返回的就是相同的对象,但是在这个范围之外就不行。通常是这种行为更多依赖于JVM,因此检查时最好是用equals()方法而避免使用“==”。
示例:
Integer i1 = 200; Integer i2 = 200; if (i1 == i2) System.out.println("相等"); else System.out.println("不相等");
结果是“不相等”。因为在这个例子中,自动拆箱并没有执行。“200”这个字面值被装箱在两个不同的整型对象(不同的JVM结果可能不一样),然后这些对象通过“==”进行比较,结果是false,因为这两个对象是不同的实例,拥有不同的内存地址。
Integer i1 = 100; Integer i2 = 100; if (i1 == i2) System.out.println("相等"); else System.out.println("不相等");
此时结果是”相等”。因为int的值在-127到127这个范围内JVM会将值缓存起来,所以“==”会返回true的结果。
标签:
原文地址:http://www.cnblogs.com/tianex/p/5100002.html