Java 整数の比較: `==` が機能するのはどのような場合、そして `equals()` を使用する必要があるのはどのような場合ですか?
整数参照の等価性と値の等価性
Java では、int のようなプリミティブと Integer のようなオブジェクト ラッパーは互換性がありません。この質問は、等しい int 値を持つ Integer オブジェクトが == を使用して誤って比較され、予期しない真の結果が生じるという問題を提起しています。
答えは、JVM による Integer 値のキャッシュにあります。パフォーマンス上の理由から、JVM は特定の範囲 (-128 ~ 127) 内で事前に割り当てられたオブジェクトを再利用します。 == を使用して Integer オブジェクトを比較する場合、JVM は値の同一性ではなく、参照の同一性をチェックします。このキャッシュされた範囲内の値の場合、参照の等価性は値の等価性を意味します。
ただし、提供されたコード例では、整数値はこのキャッシュされた範囲外にあるため、参照の等価性は値の等価性を保証しません。代わりに、equals() を使用して整数値が等しいかどうかを比較する必要があります。
質問の回答で参照されている stackoverflow リンクは、オートボックス化の複雑さと、コンパイラーが常に「正常に機能する」ことができない理由についてのさらなる洞察を提供します。
要約すると、プリミティブに == を使用すると便利ですが、オブジェクトを扱う場合には参照の等価性の制限を理解することが重要ですInteger のようなラッパー。値の等価比較の場合は、代わりにequals()を使用する必要があります。
以上がJava 整数の比較: `==` が機能するのはどのような場合、そして `equals()` を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

データベースクエリにTKMYBATISを使用する場合、クエリ条件を構築するためにエンティティクラスの変数名を優雅に取得する方法は一般的な問題です。この記事はピン留めします...
