繁体   English   中英

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

[英]I have 2 Same value object of String Buffer Class. String equals() method Showing False result Why?

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

它将显示错误结果,为什么?

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

所以

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

为比较基准,这就是为什么你得到

StringBuffer类中没有equals覆盖。 因此,它继承了Object类的定义。 从Java API我们知道它的行为:

类Object的equals方法在对象上实现了最有区别的对等关系。 也就是说,对于任何非空参考值x和y,当且仅当x和y引用同一个对象(x == y的值为true)时,此方法才返回true。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM