本日のコンテンツ紹介は約9分です 写真 違いをよりよく理解するために、例を見てみましょう。 この例では、2 つの文字列の内容は同じですが、メモリ内のアドレスは異なります。したがって、.equals() メソッドを使用して内容を比較すると true が返されますが、"==" 演算子を使用してアドレスを比較すると false が返されます。 1. .equals() メソッドをオーバーライドするJava の基礎を学んだことがあるなら、すべての Java クラスがデフォルトで Object クラスを継承し、Object クラスに .equals() メソッドがあることを知っているはずです。 コードから、.equals() メソッドはデフォルトで比較に == 演算子を使用していることがわかります。サブクラスが equals() メソッドをオーバーライドしない場合、== 演算子を使用すると、equals() メソッドと同じ結果になります。これは、2 つのオブジェクトのメモリ アドレスが等しいかどうかを比較するために使用されます。 しかし、現実には、多くのクラスがequals()メソッドをオーバーライドしています。これは、メモリアドレスの比較要件が比較的厳しく、実際にはすべてのシナリオのニーズを満たしていないためです。たとえば、Stringクラスを比較する場合、ほとんどの人はコンテンツが等しいかどうかのみを判断したいだけで、メモリアドレスが等しいかどうか(オブジェクトであるかどうか)を実際に知りたいわけではありません。 また、「Java文字列定数プールの詳細な理解」の記事では、Java仮想マシンがメモリオーバーヘッドを削減し、パフォーマンスを向上させるために文字列用のスペースを特別に割り当てることがすでにわかっています - 文字列定数プール つまり、new はヒープ上に新しいスペースを必要とするため、new キーワードを使用する代わりに、String s = "Hello" の形式を使用して文字列オブジェクトを作成することをお勧めします。 1.1. Stringクラスのequals()メソッドJdk11のStringクラスのequals()メソッド
特記事項: Latin1 (ISO 8859-1 とも呼ばれる) と UTF-16 (Unicode Transformation Format 16 ビット) は、2 つの異なる文字エンコード方式です。 Latin1 と UTF-16 は 2 つのエンコード方式ですが、違いは大きくありません。UTF-16 の equals() メソッドを例に挙げてみましょう。 注: Java 8とJava 11のequals()メソッドのソースコードは異なります。JDK8のequals()メソッド
1.2. 例の説明例1: 出力は何ですか? String クラスの equals メソッドは、文字列オブジェクトの内容が等しいかどうかを比較します。両方とも "Hello" なので、結果は true になります。 例2: 出力は何ですか? == 演算子は、オブジェクトのアドレスが等しいかどうかを比較します。== の左側はヒープ内に作成されたオブジェクトで、右側は文字列定数プール オブジェクトです。内容は等しいですが、アドレスが等しくないため、結果は false になります。 例3: 出力は何ですか? 新しいオブジェクトは完全に異なるメモリアドレスを持つ必要があるため、結果は偽になります。 例4: 出力は何ですか? hとelloは両方とも文字列定数プールにあるので、コンパイラは+演算子に遭遇すると自動的にhelloに最適化し、結果はtrueになります。 例5: 出力は何ですか? new String("hello") が実行されると、まず文字列定数プールにオブジェクトが作成され、次にヒープにオブジェクトが作成されます。 intern() メソッドが実行されると、文字列定数プールにオブジェクト 'hello' がすでに存在することが判明するため、文字列定数プールのオブジェクト参照が直接返され、文字列定数プールの 'hello' と比較されるため、結果は true になります。 String.intern()の詳細な分析では、すでにその理由を紹介しました。 2. 他の方法との比較
|
<<: 世界最強のモデル クロード3号が物理・化学を覆す!博士課程の1年間の実験の結果が2時間で解読され、ネットユーザーは「科学的研究はもう存在しない」と叫んだ。
>>: Claude3はマイクロソフトとOpenAIに警鐘を鳴らした
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
1. 因果修正の背景1. 逸脱の発生推奨システムは、収集されたデータに基づいて推奨モデルをトレーニン...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
スマートホーム テクノロジーの登場により、私たちが生活空間と関わる方法は大きく変わりました。音声制御...
近年、我が国のロボット産業は急速な発展傾向を示していますが、一方で、中核技術の弱さや粗利益率の低下な...
最近、視覚合成というタスクが大きな注目を集めています。 NVIDIA の GauGAN は数日前にバ...
12月5日、国務院の承認を得て、科学技術部と河南省政府の共催により、12月6日から8日まで河南省鄭州...
自動運転車、交通標識検出、顔認識、セルフサービスチェックアウト。 これらすべての高度なソリューション...
以前から大きく騒がれ、メディアもその信憑性を証明する手がかりを繰り返し探していた「テスラの自社開発A...
[[397251]]画像ソース: https://pixabay.com/images/id-610...
2020年、「人工知能」は産業発展における高頻度のホットワードとなり、市場展望は業界全体で広く認知さ...
翻訳者|朱 仙中レビュー | Chonglou導入この記事は、人工知能に関する最新の研究に関する当社...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
AI は、複雑なデータセットを迅速に解析し、そのデータに基づいて洞察を生成することで、企業が IT...