2つの文字列が同じ文字列であるかを判定するにはString#equals()を使用します。Java以外のプログラミング言語では == 演算子で判定することができる場合が多いですが、Javaでは正しく動作しません。
コード例
public class Test {
public static void main(String[] args) {
String a1 = String.valueOf('a');
String a2 = String.valueOf('a');
if (a1.equals(a2)) {
System.out.printf("matched");
} else {
System.out.printf("unmatched");
}
}
}
出力
mathched
なぜ==演算子で比較できないか
Javaではオブジェクトの==演算子は同一のオブジェクトであるかを示す演算子です。
文字列はString型というオブジェクトであり、intやcharのようなプリミティブ型ではないため==演算子は同一のオブジェクトである場合のみtrueとなります。
試しに上記のコード例を==演算子での比較に置き換えてみると結果が変わるのがわかります。