Javaでは数値の比較は「==」を使いますが、
文字列の比較には「.equals」を使います。
ここでは、文字列の比較の方法について解説していきます。
「==」は使えない
説明のためにサンプルプログラムを見てください。
サンプルプログラム1
public class Sample3 {
public static void main(String[] args) {
String a ="abc";
String b ="abc";
if (a==b) System.out.println("aとbは同じです");
else System.out.println("aとbは違います");
}
}
実行結果
C:\Users\kotar\Desktop\Java\jdk1.8.0_162\program>java Sample3
aとbは同じです
このサンプルプログラムは a と b の文字列が同じか違うかを判定するプログラムです。
このプログラムでは「==」を使っていますが、結果は正しく表示されています。
しかし、これはたまたま正しい結果になっただけなのです。
次のプログラムを見てください。
サンプルプログラム2
public class Sample4 {
public static void main(String[] args) {
String a ="abc";
String b ="ab";
b=b+"c";
System.out.println("aの値は"+a);
System.out.println("bの値は"+b);
System.out.println();
if (a==b) System.out.println("aとbは同じです");
else System.out.println("aとbは違います");
}
}
実行結果
C:\Users\kotar\Desktop\Java\jdk1.8.0_162\program>java Sample4
aの値はabc
bの値はabc
aとbは違います
これは b の値を先に ab を代入して、後から c を足して比較しています。
結果からわかりますが、aとbは同じ文字列なのに違うと判断されてしまっています。
この理由は説明すると難しくなるので飛ばします。
文字列の比較は「equals」を使おう!
上でも見てもらいましたが、文字列の比較で「==」を使うと
変な感じになってしまいます。
だから、「equals」を使うようにしましょう。
「equals」の使い方
変数.equals(文字列)
これで文字列の比較を行うことができます。
サンプルプログラム
public class Sample5 {
public static void main(String[] args) {
String a ="abc";
String b ="ab";
b=b+"c";
System.out.println("aの値は"+a);
System.out.println("bの値は"+b);
System.out.println();
if (a.equals(b)) System.out.println("aとbは同じです");
else System.out.println("aとbは違います");
}
}
実行結果
C:\Users\kotar\Desktop\Java\jdk1.8.0_162\program>java Sample5
aの値はabc
bの値はabc
aとbは同じです
「==」を使ったときは違うと判断されましたが、
「equals」を使うと同じであると判断されました。
このように、文字列の比較をするときは、
「equals」を使うようにしましょう。
最後にアンケートをお願いします。今後のサイト運営の参考にさせていただきます。