基本:
1. Int は Java の基本データ型で、integer は int の型です。カプセル化クラス。
2. 整数変数は使用する前にインスタンス化する必要がありますが、int 変数はインスタンス化する必要がありません。
3. Integer は実際にはオブジェクトへの参照です。新しい整数オブジェクトの場合、そのオブジェクトを指すポインタが実際に生成されますが、int はデータ値を直接格納します。
4. Integer のデフォルト値は null、int のデフォルト値は 0 です。
拡張子:
1. 整数変数は実際には整数オブジェクトへの参照であるため、new を介して渡される 2 つの整数変数が等しくなることはありません (整数がnew によって生成される変数は、異なるメモリ アドレスを持つ 2 つのオブジェクトです)。
Integer i = new Integer(100); Integer j = new Integer(100); System.out.print(i == j);//false
2. integer は本質的に int のラッパー クラスであるため、整数変数を int 変数と比較する場合、2 つの変数の値が等しい限り、結果は true になります。 2 つの数値が比較されます。java 整数は自動的に解凍されるため、基本的には 2 つの int 変数の比較になります。
Integer i = new Integer(100); int j = 100; System.out.print(i == j);//true
3. new によって作成された整数変数を、new によって作成されていない整数変数と比較すると、結果は false になります。 new を使用せずに作成された変数は Java 定数プールに存在し、new を使用して作成された変数はヒープ内に新しく作成されたオブジェクトを指すため、この 2 つのメモリ アドレスは異なります。
Integer i = new Integer(100); Integer j = 100; System.out.print(i == j);//false
4. 2 つの非新規整数変数を比較する場合、2 つの変数の値が -128 ~ 127 の範囲にある場合、結果は true となり、それ以外の場合は false になります。
この奇妙な結果についての Java の説明は次のとおりです:
Integer i = new Integer(100);//在编译时会变成Integer i = Integer.ValueOf(100)
そして、Java API の Integer.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 の間の数値がキャッシュされ、次に Integer 変数に値を代入するときに、その値が -128 ~ 127 の間でキャッシュされている場合は、キャッシュから直接呼び出されます。
PHP 中国語 Web サイトには、無料の JAVA 入門チュートリアル が多数あり、誰でも学習することができます。
以上がJavaの整数と整数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。