Java 文字列を比較する方法 - クラス String

Javaで2つの文字列が同じかどうかを比較する方法です。

文字列の比較には equals を利用して比較します。比較元の String 型が null の場合、NullPointerException が発生しますので、注意が必要です。

例外が発生しないように、StringUtils などのユーティリティクラスを作って、比較用メソッドを用意することをおすすめします。

ここでは Javaで2つの文字列が同じかどうかを比較する方法 を紹介します。


文字列比較用メソッド

以下のメソッドでは、引数に指定された 2 つのオブジェクトを比較します。等しい場合は、true を返します。

/**
 * 引数に指定された 2 つのオブジェクトを比較します。 2 つの引数が null でなく、
 * 同じ文字シーケンスを表す <code class="code">String</code> オブジェクトである場合にだけ、
 * 結果は true になります。
 *
 * @param value 比較するオブジェクト
 * @param anotherValue 比較される、もうひとつオブジェクト
 * @return String が等しい場合は true 、そうでない場合は false
 */
public static boolean equals(String value, String anotherValue) {

  if ( value == null || anotherValue == null ) return false;

  if ( value.equals(anotherValue) )
    return true;
  else
    return false;
}

以下のテストを実行すると・・・

System.out.println(StringUtils.equals(null, null));
System.out.println(StringUtils.equals("saka-en", "saka-en"));
System.out.println(StringUtils.equals(null, "saka-en"));
System.out.println(StringUtils.equals("saka-en", null));
System.out.println(StringUtils.equals("saka-en", "SAKA-EN"));
System.out.println(StringUtils.equals("saka-en", "saka"));

結果はこうなります。

false
true
false
false
false
false

逆に、以下のメソッドでは、等しくない場合には true を返します。

/**
 * 引数に指定された 2 つのオブジェクトを比較します。 2 つの引数が null でなく、
 * 違う文字シーケンスを表す String オブジェクトである場合にだけ、結果は true になります。
 *
 * @param value 比較するオブジェクト
 * @param anotherValue 比較される、もうひとつオブジェクト
 * @return String が等しくない場合は true 、等しい場合は false
 */
public static boolean notEquals(String value, String anotherValue) {

  if ( value == null || anotherValue == null ) return false;

  if ( value.equals(anotherValue) )
    return false;
  else
    return true;
}

以下のテストを実行すると・・・

System.out.println(StringUtils.notEquals(null, null));
System.out.println(StringUtils.notEquals("saka-en", "saka-en"));
System.out.println(StringUtils.notEquals(null, "saka-en"));
System.out.println(StringUtils.notEquals("saka-en", null));
System.out.println(StringUtils.notEquals("saka-en", "SAKA-EN"));
System.out.println(StringUtils.notEquals("saka-en", "saka"));

結果はこうなります。

false
false
false
false
true
true

まとめ

Javaで2つの文字列が同じかどうかを比較する方法しました。

文字列比較は、どのプログラム言語を利用する場合でも基本となりますので、しっかり覚えておきたいですね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。