2017-06-21 4 views
1

は、私は、NetBeansで次のコードを試してみましたが、私は私が実際にどのようにequal()作品を知りたいfalse として出力値を受けました。Stringバッファでequals()メソッドがどのように機能しますか?

私のコードはでした:

StringBuffer x=new StringBuffer("Hey"); 
StringBuffer y=new StringBuffer("Hey"); 
System.out.println(x.equals(y)); // my output was false 
+0

たStringBufferにはない返す必要がありますオーバーライドequals(つまり、参照を比較している) –

答えて

0

StringBufferObject.equalsメソッドをオーバーライドしていないので、文字列比較を行っていません。代わりに直接オブジェクトの比較を実行しています。あなたの条件はif(s1==s2)であるかもしれません。文字列を比較する場合は、最初にバッファを文字列に変換する必要があります。

は編集http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html

を参照してください:私たちはJavaの世界にいると仮定しています。単一スレッド環境にある場合、またはバッファが単一のスレッドに分離されている場合は、StringBufferの代わりにStringBuilderを使用する必要があります。

Does the StringBuffer equals method compare content?

+2

リンクを回答として投稿するのではなく、質問を重複としてマークしておくべきです。リンクのみの回答はとにかく良い答えではありません。 – Guy

+0

あなたの提案をお寄せいただきありがとうございます。私は今からやります。 – Amit

1

だけでソースコード*を見てください。

あなたはそれだけのObject呼び出すequals

public boolean equals(Object obj) { 
    return (this == obj); 
} 

はまた、Eclipseのオブジェクト上でCTRL-クリックを使用している場合Difference between StringBuilder and StringBuffer

*を参照してコード化されたソースがにロードされている場合StringBuilderを使用することを検討していることがわかりますあなたのシステムは、あなたをそこに連れて行きます。

0

あなたは文字列ではなくオブジェクトと比較しています。そしてそれらは平等ではありません。 両方のStringbufferでtoString()を呼び出し、結果の文字列を比較します。

0

はちょうどそれは、2つのオブジェクトがequaleある天候を比較しますと、「これを」か 例 それは再帰:null以外の参照値xについて、x.equals(x)は真

+0

回答のバッターの可読性のための参考コードまたは例を追加してください。 – CodeChanger

関連する問題