ホームページ >Java >&#&チュートリアル >Java の整数比較では、値が等しい場合でも False が返される場合があるのはなぜですか?

Java の整数比較では、値が等しい場合でも False が返される場合があるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 04:12:12498ブラウズ

Why Do Java's Integer Comparisons Sometimes Return False Even When Values Are Equal?

Java での謎の整数ボックス化の公開

問題の Java コード スニペットは、興味深い疑問を引き起こします。2 つの Integer オブジェクトを同等のものと比較するのはなぜでしょうか。値が異なる結果をもたらす?

Large の虚偽Integers

127 より大きい整数を表す 2 つの Integer オブジェクトを比較する場合、それらの参照の比較によって等しいかどうかが判断され、結果は false になります。これは、これらのオブジェクトがメモリ内の別個のエンティティであるため、これらのオブジェクトの独特の性質から生じます。

小さな整数の背後にある真実

ただし、より小さな整数を扱う場合、異なる行動が現れます。 Java 言語仕様によれば、-128 から 127 までの整数値は同一のオブジェクトにボックス化されることが保証されています。このような値を表すボックス化されたオブジェクトは、等価演算子 (==) を使用すると一貫して true として比較されます。

区別の根拠

この区別は、実用的な妥協案であり、パフォーマンスと一貫性の間のバランス。これらの一般的に使用される値をキャッシュすると、効率的な再利用が可能になり、より複雑な値のオブジェクト ID についての仮定が回避されます。これにより、パフォーマンスを妨げることなく、ほとんどの場合に望ましい動作が保証されます。

結論

整数の等価比較の一見矛盾した動作は、Java のボクシング メカニズムの基礎となる実装に起因しています。大きな整数は独自のアイデンティティを維持しますが、小さな整数はキャッシュされたオブジェクトの恩恵を受け、一貫した等価性が保証されます。

以上がJava の整数比較では、値が等しい場合でも False が返される場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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