我有这样的Java代码:
public class Foo {
public static void main(String[] args) {
Integer x = 5;
Integer y = 5;
System.out.println(x == y);
}
}
难道是保证打印true
在控制台上?我的意思是,它是通过比较值两个盒装整数(这是我需要做的),或者通过引用身份?
此外,它会有什么不同,如果我将它们转换成这样的整数拆箱
public class Foo {
public static void main(String[] args) {
Integer x = 5;
Integer y = 5;
System.out.println((int) x == (int) y);
}
}
不,这不是比较正确的方式Integer
对象。您应该使用Integer.equals()
或Integer.compareTo()
方法。
默认情况下,JVM将缓存Integer
从[-128,127]范围内的值(见java.lang.Integer.IntegerCache.high
属性),但其他值都不会被缓存:
Integer x = 5000;
Integer y = 5000;
System.out.println(x == y); // false
拆箱到int
或调用Integer.intValue()
将创建一个int
原语可以与安全相比,==
运营商。然而拆箱一个null
会导致NullPointerException
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句