JavaでString文字列が等しいかどうかの判定

2009/02/23 13:41Update
TAGS: Java | 文字列 | String | equals | == | 演算子 | 等しい

初心者はString文字列が等しいかどうかの判定を行う際に、間違って == 演算子を利用した経験がある方は少なくないと思います。本文は ==演算子とequalsメソッドの違いについて解説します。

文字列の値が等しいかどうかの判定は、equalsメソッドを使います。
==演算子は、インスタンスは等しいかどうかを判定する時に利用します。

以下のサンプルから、両者の違いを見てみましょう。
public class Test {

    public static void main(String[] args) {
        String value1 = "abc123";
        String value2 = "abc123";
        String value3 = new String("abc123");
        String value4 = new String("abc123"); 
        
        System.out.print("【\"abc123\" == \"abc123\"】 : ");
        System.out.println(value1 == value2);
        
        System.out.print("【\"abc123\" == new String(\"abc123\")】 : ");
        System.out.println(value2 == value3);
        
        System.out.print("【new String(\"abc123\") == new String(\"abc123\")】 : ");
        System.out.println(value3 == value4);
        
        System.out.print("【\"abc123\".equals(\"abc123\")】 : ");
        System.out.println(value1.equals(value2));
        System.out.print("【\"abc123\".equals(new String(\"abc123\"))】 : ");
        System.out.println(value2.equals(value3));
        System.out.print("【new String(\"abc123\").equals(new String(\"abc123\"))】 : ");
        System.out.println(value3.equals(value4));
    }

}


実行結果
【"abc123" == "abc123"】 : true
【"abc123" == new String("abc123")】 : false
【new String("abc123") == new String("abc123")】 : false
【"abc123".equals("abc123")】 : true
【"abc123".equals(new String("abc123"))】 : true
【new String("abc123").equals(new String("abc123"))】 : true

実行結果から見てみると、new String()で生成された2つの文字列は、値が同じであっても、== 演算子で「等しくない」ことを分かりました。
なので、文字列の「等しいかどうかの判定」を行うには、常にequalsメソッドを利用したほうがいいでしょう。

equalsメソッドのほか、compareToという比較用メソッドがあります。
equalsメソッドの戻り値はbooleanであるのに、compareToの戻り値はint(等しい場合は0)になります。

詳細:Java文字列処理 - Stringクラス

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation