本日のコンテンツ紹介は約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に警鐘を鳴らした
最近、NPJ—Computational Materials誌に研究論文が掲載されました。この論文は...
ビジネスにおいては、人工知能のリスクと限界を考慮する必要があります。 AI のリスクと限界には、プラ...
自己教師学習は本当に AGI への重要なステップなのでしょうか? Metaの主任AI科学者であるヤン...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
近年、科学技術における人工知能の急速な発展により、人工知能は私たちの日常生活にいくつかの新たなハイラ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
2020 年は特別な年であり、World Innovators Meet (WIM) の 6 年目と...
[51CTO.comより引用] 2017年12月1日~2日、51CTO主催のWOTDグローバルソフト...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
[51CTO.comより引用] 今年3月中旬、JD.comとIntelが共同主催するJDataアル...
諺にあるように、人がいるところには川や湖があり、さまざまな立場や利害の争いがあるものです。科学研究の...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
最近、シビチェンがチップスを製造しているというニュースが大きな騒ぎを引き起こしました。 [[2547...
翻訳者 |ブガッティレビュー | Chonglou AgentGPT Web は、ユーザーがカスタマ...
市場には優れた AI ソフトウェア ツールが数多く存在しますが、プロジェクトを実装する際には強力なチ...