Java のラッパー オブジェクトは、プリミティブ データ型とオブジェクトの間の重要なブリッジを提供します。ただし、整数値のボックス化では独特の動作が観察されています。インスタンスは -128 ~ 127 の範囲内でのみ共有されているようです。
次のコードを考えてみましょう:
Integer integer1 = 127; Integer integer2 = 127; System.out.println(integer1 == integer2); // outputs "true"
この場合、integer1 と integer2 には、== と比較したときに「true」が出力されることからわかるように、同じインスタンスが割り当てられます。ただし、値がこの範囲を超えると、別の動作が示されます。
Integer integer1 = 128; Integer integer2 = 128; System.out.println(integer1 == integer2); // outputs "false"
なぜこの現象が発生するのですか?
Java 言語仕様 (JLS) によると、具体的には次のように述べられています。 「特定の共通の値は常に区別できないオブジェクトにボックス化されます。」この範囲は、「u0000 ~ u007f の範囲のバイト、char、または -128 ~ 127 (両端を含む) の int または short 数値」として定義されます。
で説明されているように、この動作の正当な理由。 JLS は、「特に小型デバイスにおいて、パフォーマンスに過度のペナルティを課すことなく、ほとんどの一般的なケースで動作が望ましいものになることを保証する」ことを目的としています。共有インスタンスの動作を共通の値の範囲に制限することで、Java はパフォーマンスと期待される動作のバランスをとります。
以上がJava の整数ラッパー オブジェクトが -128 ~ 127 の間でのみ共有されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。