Java におけるオブジェクト参照の比較と値の同等性
Java では、== 演算子を使用して文字列を比較する場合、オブジェクトの同等性の判断が混乱する可能性があります。この一見あいまいな動作を詳しく見てみましょう。
次のシナリオを考えてみましょう:
// Define a String array String[] parts = {"231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"}; // Perform comparison if ("231" == parts[0]) { // This comparison will evaluate to false }
驚くべきことに、比較は false を返します。これは、Java の == 演算子が値の同一性ではなく、オブジェクト参照の同一性をチェックするためです。他の多くの言語とは異なり、Java 文字列はオブジェクトです。 == を使用して 2 つの文字列を比較する場合、実際の文字列値ではなく、それらのオブジェクトが存在するメモリ アドレスが比較されます。
文字列の実際の値を比較するには、String.equals メソッドを使用する必要があります。
if ("231".equals(parts[0])) { // This comparison will evaluate to true }
このメソッドは、オブジェクト参照ではなく、文字列の内容をチェックします。
Java のすべてのオブジェクトについて、次のことを覚えておいてください。 == 演算子は参照の等価性をチェックし、equals メソッドは実際のオブジェクトの値を比較します。オブジェクト参照を比較するときに == を使用すると誤った結論につながる可能性があるため、オブジェクトの等しいかどうかをチェックするときに等号を使用することが重要です。
以上がJava 文字列の比較: `==` と `.equals()` – いつどちらを使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。