ホームページ >Java >&#&チュートリアル >Java の整数キャッシュが `==` 比較に影響するのはなぜですか?

Java の整数キャッシュが `==` 比較に影響するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-18 14:30:12930ブラウズ

Why Does Java's Integer Caching Affect `==` Comparisons?

Java で小さい整数がキャッシュされるのはなぜですか?

問題:

次の Java コードを考えてみましょう:

Integer a = 1000, b = 1000;  
System.out.println(a == b); // false  
Integer c = 100, d = 100;  
System.out.println(c == d); // true

なぜ a と b の比較は false を返し、c と d の比較は false を返すのですか両方のペアが同じ数値を持っているにもかかわらず、 true ですか?

答え:

メモリとパフォーマンスを最適化するために、Java 仮想マシン (JVM) は特定の領域内に整数インスタンスをキャッシュします。

JVM は、小さな整数値 (通常は -128 ~ 127) を認識します。プログラムでよく使われます。このような値ごとに新しい Integer オブジェクトを割り当てると、過剰なメモリが消費されます。したがって、JVM は、この範囲内で事前に割り当てられた Integer インスタンスのキャッシュを維持します。オートボクシングが発生する場合、またはリテラル整数値が整数変数に割り当てられる場合 (例: Integer c = 100;)、JVM は対応するインスタンスをキャッシュから取得します。

この最適化により、メモリのオーバーヘッドが大幅に削減され、キャッシュ効率が向上します。 。同じ Integer オブジェクトへの複数の参照を保存することで、JVM は冗長なオブジェクトの作成を回避し、メモリ使用量を最適化できます。

以上がJava の整数キャッシュが `==` 比較に影響するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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