equals()方法如何在String Buffer中工作?

时间:2017-06-21 04:27:50

标签: java string netbeans equals stringbuffer

我在netbeans中尝试了以下代码,我收到的输出值为 false 我想知道 equal() 实际上是如何运作的。

我的代码是:

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

4 个答案:

答案 0 :(得分:1)

只需查看源代码*

您会看到它只是调用Object' equals

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

另请考虑使用StringBuilder,请参阅Difference between StringBuilder and StringBuffer

*如果使用Eclipse按住Ctrl键单击对象,如果源代码已加载到您的系统中,它将带您到那里

答案 1 :(得分:0)

StringBuffer不会覆盖Object.equals方法,因此它不会执行字符串比较。相反,它正在执行直接对象比较。您的条件也可以是if(s1==s2)。如果你想比较你需要首先将缓冲区变成字符串的字符串。

  

请参阅http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html

编辑:我假设我们处于Java世界中。如果您处于单线程环境中,或者您的缓冲区被隔离到单个线程,那么您应该使用StringBuilder而不是StringBuffer

Does the StringBuffer equals method compare content?

答案 2 :(得分:0)

您正在与对象进行比较,而不是字符串。那些不平等。 在两个Stringbuffers上调用toString()并比较生成的字符串。

答案 3 :(得分:0)

只是它会比较天气两个对象是否等于“这个” 例 它是自反的:对于任何非空引用值x,x.equals(x)应该返回true