StringBuffer str1=new StringBuffer("hello1");
StringBuffer str2=new StringBuffer("hello1");
System.out.println(str1.equals(str2));
它会显示错误的结果为什么?
StringBuffer equals()
方法不会被覆盖以检查内容。它使用默认的"浅相等"来比较它从java.lang.Object.
继承的引用
所以
StringBuffer str1=new StringBuffer("hello1");
StringBuffer str2=new StringBuffer("hello1");
System.out.println(str1.equals(str2));
是比较参考,这就是为什么你得到错误
StringBuffer
类中没有覆盖equals
。因此,它继承了Object
类的定义。从Java API中,我们知道它的行为:
类对象的 equals 方法实现了最具辨别力的方法 对象上可能的等价关系;也就是说,对于任何非空 引用值 x 和 y,此方法返回 true 当且仅当 x 和 y 引用同一个对象(x == y 的值为 true)。
您有两个不同的对象,因此在这种情况下equals
返回false
。