003 演算子(比較演算子) 010 解答例

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // スキャナーを使ってユーザーからの入力を読み取る
        Scanner scanner = new Scanner(System.in);

        System.out.print("1つ目の文字列を入力してください: ");
        String str1 = scanner.nextLine(); // 1つ目の文字列の入力を読み取り

        System.out.print("2つ目の文字列を入力してください: ");
        String str2 = scanner.nextLine(); // 2つ目の文字列の入力を読み取り

        // 文字列が同じかどうかを判定
        if (areStringsEqual(str1, str2)) {
            System.out.println("入力された文字列は同じです。");
        } else {
            System.out.println("入力された文字列は異なります。");
        }
    }

    // 2つの文字列が同じかどうかを判定するメソッド
    public static boolean areStringsEqual(String str1, String str2) {
        return str1.equals(str2);
    }
}

このプログラムでは、areStringsEqual メソッドを使用して、ユーザーが入力した2つの文字列が同じかどうかを判定しています。条件判定には equals() メソッドが使用されており、それに基づいて適切なメッセージが表示されます。

文字列の比較

文字列の比較は、プログラムで2つの文字列を比較して、それらが同じか異なるかを判定する操作です。Javaでは、文字列を比較するために、equals() メソッドや == 演算子を使用できます。

equals() メソッドを使用した文字列の比較:

1.equals() メソッドは、2つの文字列が同じかどうかを判定するために使用されます。
equals() メソッドは文字列の内容を比較します。つまり、文字列の中身が同じであれば true を返し、異なれば false を返します。

String str1 = "Hello";
String str2 = "World";
boolean isEqual = str1.equals(str2); // isEqual は false


2.== 演算子を使用した文字列の比較:

== 演算子は、2つの文字列が同じオブジェクトを参照しているかどうかを判定するために使用されます。
== 演算子は文字列のオブジェクトの比較であり、文字列の内容ではなく参照を比較します。

String str1 = "Hello";
String str2 = "Hello";
boolean isSameReference = (str1 == str2); // isSameReference は true

文字列の比較においては、通常、equals() メソッドを使用することが推奨されます。なぜなら、equals() メソッドは文字列の内容を比較するため、2つの異なる文字列オブジェクトであっても、内容が同じであれば true を返します。一方、== 演算子は参照の比較であるため、同じ文字列リテラルを共有する場合にのみ true を返します。

文字列比較は、文字列が同じかどうかを確認するために非常に重要であり、条件判定や文字列操作の一部として広く使用されます。

文字列の比較で== 演算子がfalseを返す例

== 演算子が false を返す例として、Javaでは文字列リテラルではなく、new キーワードを使用して新しい文字列オブジェクトを生成した場合が挙げられます。new キーワードを使用すると、新しい文字列オブジェクトがメモリ内に作成され、同じ内容の文字列であっても別々のオブジェクトとして扱われます。以下はその例です:

String str1 = new String("Hello");
String str2 = new String("Hello");

boolean isSameReference = (str1 == str2); // isSameReference は false

この場合、str1str2 は同じ内容の文字列を持っていますが、それぞれ別々の文字列オブジェクトを参照しているため、== 演算子は false を返します。文字列の内容が同じであっても、新しいオブジェクトが生成されたため、それらの参照は異なります。

このような状況では、文字列の内容を比較するために equals() メソッドを使用することが適切です。equals() メソッドは文字列の内容を比較し、同じ内容の場合に true を返します。

boolean isEqual = str1.equals(str2); // isEqual は true

したがって、文字列の内容を比較する場合には、equals() メソッドを使用することをお勧めします。

「003 演算子」問題集リスト