13

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

宣言された変数が同じでない理由がわかりません。

例:コード:

 String firstPart = "F";
 String whole = "False";
 String connected = firstPart + "alse";
 System.out.println(connected == whole);

これでブール値が生成され、「true」になると思いましたが、そうではありません。falseとして出力され、理由がわかりません。

誰かがこれを説明できますか?

4

8 に答える 8

20

値ではなく、参照を比較しています。

使用する必要がありますequals

connected.equals(whole);
于 2013-01-15T13:38:14.413 に答える
15

これ

String connected = firstPart + "alse";

新しい基になるchar配列と新しい参照を使用して、新しい オブジェクトを作成します。String

したがって、('==''を使用して)参照を比較すると、一致するものは得られません。を使用して実際のオブジェクトの内容を比較すると、equals()必要な結果が得られます(String.equals()基になるchar配列の内容を比較するため)

于 2013-01-15T13:39:47.640 に答える
6

を使用して文字列を比較する必要がありますequals()。そのようです:

System.out.println(connected.equals(whole));

于 2013-01-15T13:38:25.327 に答える
1

「==」を使用して文字列を比較する場合、参照値を比較したいが、持っている値は比較したくないことを意味します。この場合、falseが返されます。

equals保持している値に基づいて文字列を比較するメソッドを使用する必要があります。

于 2013-01-15T13:41:35.503 に答える
1

文字列を比較するには、.equals()メソッドを使用する必要があります。

于 2013-01-15T13:42:00.060 に答える
1

基本的に、==でチェックできるのはPDTのみです。これらは、byte、short、int、long、float、double、boolean、char、そしてもちろん参照です。取得する2つの参照は異なるオブジェクトであるため、結果はfalseになります。

ADT(またはオブジェクト)の場合は、equals()メソッドを使用する必要があります。すべてのJavaオブジェクトにはそれらがあり、独自のオブジェクトにも実装する必要があります。Stringオブジェクトの場合、これは自動的に行われ、文字が比較されて同等性がテストされます。

于 2013-01-15T13:42:00.180 に答える
1

JavaはJavaScriptではありません-比較演算子は異なります:

Java==では、「2つのオブジェクトは同じインスタンスですか?」を意味し、JavaScriptの===演算子に対応します。

Java.equals()の文字列は「文字が同じである」ことを意味し、JavaScriptの==演算子に対応します。

于 2013-01-15T13:42:34.087 に答える
1

経験則:==オブジェクト値ではなく、オブジェクト参照を比較します。オーバーライドequalsは、オブジェクト間の同等性を定義する標準的な方法です(Stringこれはクラスであり、プリミティブではないため含まれています)。

firstPartwholeおよびconnected新しいそれぞれを定義します。これにより、プール内で同じものと一致するString場合でも、それらの参照は異なります。これは、値を考慮しないためです。connectedwholeString==

于 2013-01-15T13:43:42.643 に答える