java基礎構文

【Java】equalを使った文字列の比較の仕方

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」を使うようにしましょう。

 

最後にアンケートをお願いします。今後のサイト運営の参考にさせていただきます。