int と Integer の違い
1. Integer は int のラッパー クラスであり、int は Java の基本データ型です
2. 整数変数は使用する前にインスタンス化する必要がありますが、int 変数はインスタンス化する必要はありません。
3. 整数は実際にはオブジェクトへの参照です。新しい整数が作成されると、ポインターが作成されます。実際には、このオブジェクトを指すように生成されます。; 一方、int はデータ値を直接格納します
4. Integer のデフォルト値は null で、int のデフォルト値は 0
推奨される学習: java チュートリアル
拡張機能:
Integer と int の比較
1. Integer 変数は実際にはへの参照であるため、 Integer オブジェクトの場合、new Integer 変数によって生成される 2 つは常に等しくありません (new は異なるメモリ アドレスを持つ 2 つのオブジェクトを生成するため)。
Integer i = new Integer(100); Integer j = new Integer(100); System.out.print(i == j); //false
2. Integer 変数と int 変数を比較する場合、2 つの変数の値が等しい限り、結果は true になります (パッケージング クラス Integer と基本データを比較するときのため) int 型の場合、java は自動的に int を解凍し、実際の比較は 2 つの int 変数の比較になります)
Integer i = new Integer(100); int j = 100; System.out.print(i == j); //true
3. 非 new によって生成された Integer 変数が new Integer によって生成された変数と比較される場合() の場合、結果は false になります。 (non-new によって生成された Integer 変数は Java 定数プール内のオブジェクトを指し、new Integer() によって生成された変数はヒープ内に新しく作成されたオブジェクトを指すため、この 2 つはメモリ内で異なるアドレスを持ちます)
Integer i = new Integer(100); Integer j = 100; System.out.print(i == j); //false
4 . 新しく生成された 2 つの Integer オブジェクトではない場合、比較する場合、2 つの変数の値が -128 から 127 の間にある場合、比較結果は true になります。この範囲内にない場合、比較結果は false です
Integer i = 100;Integer j = 100; System.out.print(i == j); //trueInteger i = 128; Integer j = 128; System.out.print(i == j); //false
項目 4 の理由:
Java が Integer i = 100; をコンパイルすると、Integer i = Integer.valueOf(100) に変換されます。 ;、および Java API の整数型 valueOf の定義は次のとおりです:
public static Integer valueOf(int i){ assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high){ return IntegerCache.cache[i + (-IntegerCache.low)]; } return new Integer(i); }
java は -128 から 127 までの数値をキャッシュします。整数 i = 127 の場合、127 がキャッシュされます。次回は整数 j = 127 が書き込まれます。そのときは、キャッシュから直接取得され、新しいものではありません。
詳細については、プログラミング学習コースをご覧ください。 PHP中国語ウェブサイトへ!
以上がint と Integer の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。