ホームページ >Java >&#&チュートリアル >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 サイトの他の関連記事を参照してください。