本日のコンテンツ紹介は約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に警鐘を鳴らした
機械学習の話題は誰もが話題にするほど普及していますが、それを完全に理解している人はほとんどいません。...
[[264191]]少し前、米国で初となるドローン配送の「操縦免許」が正式に発行された。これを取得...
困難な一年であったにもかかわらず、世界中の多くの企業が、ビジネスを最大化するために人工知能(AI)を...
[[187402]]人工知能は現在、魔法のような大流行を経験しています。データは、数字の羅列としてニ...
現在、クラウドコンピューティングやAIなどの技術の出現により、データセンター設計の構造的変化が進み、...
[51CTO.comからのオリジナル記事] インターネット+の急速な発展に伴い、オフライン小売業界...
XGBoost アルゴリズムは、Kaggle やその他のデータ サイエンス コンテストで優れた結果...
画像およびマシンビジョン技術を使用した産業オートメーションとインテリジェンスの需要があらゆる分野で広...
アドビの共同創業者ジョン・ワーノック氏が19日、82歳で亡くなった。本日、Adobe は公式に発表を...
家に座って、数秒でマスクに変身しましょう。見てください、この男はコンピューターの前に座っています。最...
AI、特に GenAI の急速な発展により、分析および IT リーダーには、データ戦略とデータ管理...
OpenAIの「宮廷闘争」ドラマはもうすぐ終わりを迎える。 CEOのサム・アルトマンは取締役会によっ...