本日のコンテンツ紹介は約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に警鐘を鳴らした
[[434750]] Python 中国語コミュニティ (ID: python-china) LST...
ビッグデータダイジェスト制作編纂者:李磊、銭天培近年、深層強化学習 (Deep RL) は人工知能に...
「アルゴリズム」の問題について困惑している人から手紙を受け取りました:私はネットワーク専攻なのでソ...
8月27日、OpenAIのチャットボットChatGPTは世界中で人気となっているものの、重要な分野...
今日はAIがどのように音楽を作曲するのかを見ていきたいと思います。この記事では、TensorFlow...
アレックス・オメイヤー翻訳者 | 陳俊レビュー | Chonglou人工知能(AI)の急速な進化と発...
「中東のシリコンバレー」と呼ばれるイスラエルはハイテク産業が発達しており、特にチップ産業や半導体技術...
ルールを研究し、ランキングの計算方法を大まかに推定した人もいます。今日のランキング = 今日のダウン...
ソレダッド・ガリ翻訳者:趙青棠企画丨孫淑娇、梁策インターネットで「特徴選択」を検索してみると、特徴選...
大規模言語モデル (LLM) の出現により、複数の分野でイノベーションが促進されました。しかし、思考...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...