【问题标题】:Does the StringBuffer equals method compare content? [duplicate]StringBuffer equals 方法是否比较内容? [复制]
【发布时间】:2011-01-12 14:49:31
【问题描述】:

可能重复:
Comparing StringBuffer content with equals

StringBuffer s1= new StringBuffer("Test");
StringBuffer s2 = new StringBuffer("Test");
if(s1.equals(s2)) {
  System.out.println("True");
} else {
  System.out.println("False");
}

为什么该代码打印“False”?

【问题讨论】:

  • equals() 方法属于 Object 类。所以每个类都有从 Object(基类)继承的 equals() 方法。 String 类已重写 equals() 方法以匹配 String 的确切内容。 StringBuffer 没有重写 equals() 方法

标签: java string equals stringbuffer


【解决方案1】:

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

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

编辑:我假设我们在 Java 世界中。

附言如果您在单线程环境中,或者您的缓冲区与单个线程隔离,您应该使用StringBuilder 而不是StringBuffer

【讨论】:

  • 感谢迈克尔对我的帮助.....
【解决方案2】:

StringBuffer equals 不会被覆盖以检查内容。它使用默认的“浅等于”来比较它从 java.lang.Object 继承的引用。

【讨论】:

  • 它的重载或覆盖?????
  • 被覆盖或超过...不,我出去了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 1970-01-01
  • 2021-07-19
  • 2010-09-07
  • 1970-01-01
相关资源
最近更新 更多