文字列の比較をしたいとき
文字列の比較をしたいときの書き方について。
以下は論外である。
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")){ // 安全
/* */
}