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

Java

今回の記事ではif文でString型の文字列を比較する方法について解説します。

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

「独学だと何から勉強したら良いかわからない」という方にはDig Skillがおすすめです!
Dig Skillでは月1000円でオリジナルのカリキュラムを使ってWebアプリの開発方法を学ぶことができます!30日間の無料体験もあるので、公式サイトをチェックしてみてください!

実際のコードで確認

まずは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メソッドを使う!

「独学だと何から勉強したら良いかわからない」という方にはDig Skillがおすすめです!
Dig Skillでは月1000円でオリジナルのカリキュラムを使ってWebアプリの開発方法を学ぶことができます!30日間の無料体験もあるので、公式サイトをチェックしてみてください!

コメント

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