【Java】if文でString型の文字列を比較する

結論

結論から言うとString型の文字列を==で比較することはできません。String型はequalsメソッドを持っているのでこのメソッドを活用して比較をします。実際のコードで確認してみます。

 



実際のコードで確認

まずはif文の条件式で==を使って比較してみましょう。str1とstr2にABCという同じ値を格納しています。二つの値をそれぞれ出力した後、==で比較して同じ値なら同じ値と出力し、違う値なら違う値と出力します。

class Equals {
	public static void main(String[] args) {
		String str1 = "ABC";
		String str2 = new String("ABC");

		System.out.println("str1 = " + str1);
		System.out.println("str2 = " + str2);


		if(str1 == str2) {
			System.out.println("二つの文字列は同じ値です。");
		}else {
			System.out.println("二つの文字列は違う値です。");
		}
	}
}

実行結果は以下の通りです。printlnで二つの値を出力してみるとABCと出力されます。しかしif文の条件式で二つの値を比較するとfalseになりelse内の処理が実行されます。理由としては「String型は参照型のデータだから」となります。ややこしくなるのでここでは説明を割愛します。

str1 = ABC
str2 = ABC
二つの文字列は違う値です。

結論でも書きましたがString型の値を比較する際には==ではなくequalsメソッドを使います。コードで確認してみます。

class Equals {
	public static void main(String[] args) {
		String str1 = "ABC";
		String str2 = new String("ABC");

		System.out.println("str1 = " + str1);
		System.out.println("str2 = " + str2);


		if(str1.equals(str2)) {
			System.out.println("二つの文字列は同じ値です。");
		}else {
			System.out.println("二つの文字列は違う値です。");
		}
	}
}

実行結果は以下の通りになります。ちゃんと文字列の比較がされ、同じ値と判定されました。よってif文内の処理が実行されます。

str1 = ABC
str2 = ABC
二つの文字列は同じ値です。

まとめ

文字列の比較は==ではなくequalsメソッドを使う!

コメント

タイトルとURLをコピーしました