ホームページ  >  記事  >  Java  >  Javaの整数と整数の違いは何ですか?

Javaの整数と整数の違いは何ですか?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-12-27 11:42:582761ブラウズ

Javaの整数と整数の違いは何ですか?

基本:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。