ホームページ >Java >&#&チュートリアル >Java で「整数」の等価性が時々「false」を返すのはなぜですか?
Java での整数キャッシュ: 最適化について
最近の観察により、Java での整数オブジェクトの動作に関する混乱が生じています。コード例は、等価演算子が 1000 に等しい 2 つの Integer インスタンスの場合は「false」を返し、100 に等しい 2 つのインスタンスの場合は「true」を返すことを示しています。
この一見矛盾は、Java の整数のキャッシュ メカニズムに由来しています。パフォーマンスを最適化し、メモリ フットプリントを削減するために、Java 仮想マシン (JVM) は、-128 ~ 127 の値の Integer オブジェクトをキャッシュします。これは、この範囲内の Integer インスタンスへの参照が常に同じであることを意味します。
したがって、 2 番目のコード スニペットでは、Integer インスタンスが値 100 を表し、「c」と「d」の両方が同じキャッシュされたオブジェクトを指しており、結果は「true」になります。それらの同等性を比較するとき。ただし、この範囲外の値 (1000 など) の場合は、異なる Integer オブジェクトが作成されるため、比較結果は「偽」になります。
この最適化は、メモリ使用量を削減することでパフォーマンスに影響を与え、キャッシュの使用効率を高めます。また、頻繁に使用される整数の新しいオブジェクトを作成するオーバーヘッドも排除され、コードの実行が高速化されます。
このトピックに関するさらなる研究は、次のリソースで見つけることができます。
以上がJava で「整数」の等価性が時々「false」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。