我有2个String Buffer Class的相同值对象。 String equals()方法显示错误结果为什么?

时间:2015-01-29 09:37:28

标签: java string

StringBuffer str1=new StringBuffer("hello1");
StringBuffer str2=new StringBuffer("hello1");
System.out.println(str1.equals(str2));

它会显示错误结果为什么?

2 个答案:

答案 0 :(得分:2)

不会覆盖

StringBuffer equals()方法来检查内容。它使用默认的“浅等于”来比较它从java.lang.Object.

继承的引用

所以

StringBuffer str1=new StringBuffer("hello1");
StringBuffer str2=new StringBuffer("hello1");
System.out.println(str1.equals(str2));

比较参考,这就是您获得 false

的原因

答案 1 :(得分:1)

equals课程中没有覆盖StringBuffer。所以它继承了Object类的定义。从Java API我们知道它的行为:

  

类Object的equals方法实现最具辨别力   对象可能的等价关系;也就是说,对于任何非null   引用值x和y,当且仅当x时,此方法返回true   和y引用相同的对象(x == y的值为true)。

您有两个不同的对象,因此equals在这种情况下会返回false