0

重複の可能性:
Javaで文字列を比較するにはどうすればよいですか?
Javaの文字列:等しいvs ==

私は2つの文字列を持っています。1つは小文字の「hello」で、もう1つは大文字の「HELLO」です。

toUpperCaseを変数に適用し、ブール値を使用してそれらを比較すると、変数は等しくないため、理由がわかりません。

public static void main(String[] args) {

    String a = "hello";
    String b = "HELLO";

    a = a.toUpperCase();
    b = b.toUpperCase();

    boolean c = (a==b);

    System.out.println(b + " " + a + " " + c);
}

出力はHELLOHELLOfalseですが、HELLOHELLOtrueである必要があります。いけませんか?私は何が欠けていますか?

4

5 に答える 5

8

toUpperCase正しく動作しています。を使用equalsして、両方の文字列が等しいかどうかを確認する必要があります。

boolean c = a.equals(b);
于 2012-09-20T18:58:55.293 に答える
4

String.toUpperCase()新しいオブジェクトを作成するので

boolean c = (a==b);

Stringここで2つの異なる参照を比較しているため、falseになります。

使用できます

boolean c = a.equals(b);

文字列の内容を確認します。

于 2012-09-20T18:58:55.143 に答える
1

ここで「=」は参照をチェックし、.equalsは実際のコンテンツを比較します

public static void main(String[] args) {

    String a = "hello";
    String b = "HELLO";

    a = a.toUpperCase();
    b = b.toUpperCase();

    boolean c = (a.equals(b));

    System.out.println(b + " " + a + " " + c);
}

'='を使用する場合は、次のことを試してください。

public static void main(String[] args) {

    String a = "hello";
    String b = "HELLO";

    a = a.toUpperCase();
    b = a;

    boolean c = (a==b);

    System.out.println(b + " " + a + " " + c);
}

ありがとう

于 2012-09-20T19:42:30.903 に答える
0

正しくないのは文字列比較であり、toUpperCase()

代わりにこれを行ってください:

boolean c = a.equals(b);

これは、オブジェクトの値が等しいにもかかわらず、2つの異なるオブジェクトインスタンスがあるためです。

于 2012-09-20T19:00:17.843 に答える
0

2つの文字列オブジェクト参照を比較しています(明らかに同じではありません)。代わりに、a.equal(b)を使用できます。

したがって、編集は次のようになります。

文字列a="hello"; 文字列b="HELLO";

a = a.toUpperCase();
b = b.toUpperCase();

boolean c = (a.equals(b));

System.out.println(b + " " + a + " " + c);

}

于 2012-09-20T19:00:22.460 に答える