oggioniw:
私は、このJavaコードを持っています:
public class Foo {
public static void main(String[] args) {
Integer x = 5;
Integer y = 5;
System.out.println(x == y);
}
}
それは印刷することが保証されtrue
、コンソールに?私が意味する、それは(私は何をする必要があるかである)の値によって2つの箱入りの整数を比較または参照のアイデンティティでありますか?
私はこのような箱なし整数にそれらをキャストする場合にも、それは何が違うのだろう
public class Foo {
public static void main(String[] args) {
Integer x = 5;
Integer y = 5;
System.out.println((int) x == (int) y);
}
}
チャールズDowbecki:
いいえ、それは比較する正しい方法ではありません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
安全と比較することができるプリミティブ==
演算子を。しかし、アンボクシングaがnull
になりますNullPointerException
。