文字列の比較をしたいとき

文字列の比較をしたいときの書き方について。

以下は論外である。

String str = "example";
if(str == "example"){ // false判定
    /* */
}

通常、equalsメソッドでの比較を行うが、NullPointerExceptionに気をつける必要がある。

String str = null;
if(str.equals("example")){ // NullPointerException
    /* */
}

ヨーダ記法(https://ja.wikipedia.org/wiki/%E3%83%A8%E3%83%BC%E3%83%80%E8%A8%98%E6%B3%95#%E5%88%A9%E7%82%B9)を使用すれば一応NullPointerExceptionの回避は可能。

String str = null;
if("example".equals(str)){ // 安全
    /* */
}

Java8以降では、安全なjava.util.Objects#equalsメソッドが利用できる。

String str = null;
if(Objects.equals(str, "example")){ // 安全
    /* */
}

クラスパスにcommons-lang3ライブラリが含まれている場合は、org.apache.commons.lang3.StringUtils#equalsメソッドを積極的に利用したほうが良い。

String str = null;
if(StringUtils.equals(str, "example")){ // 安全
    /* */
}