日期:2014-05-20  浏览次数:20729 次

StringBuffer
StringBuffer   str1=new   StringBuffer( "aa ");
StringBuffer   str2=new   StringBuffer( "aa ");
if(str1.equale(str2))
  System.out.println( "相等 ");
else
  System.out.println( "不相等 ");

=======================
手写可能有误,但能表达清什么意思

------解决方案--------------------
What 's your question?

The output is "不相等 ".

It 's because StringBuffer does not override the method equal(Object o) from class Object. The comparison made by str1.equale(str2) is logically equivalent to str1 == str2.
------解决方案--------------------
StringBuffer及其父类都没有实现自己的equals方法,所以你上面的equals比较时是调用的根类Object的equals方法,Object的equals方法代码是
public boolean equals(Object obj) {
return (this == obj);
}
只是比较地址,不知你明白了没有

如果你想要比较的是他们的值,可以转换成String,然后调用String的equals方法来比较
str1.toString().equls(str2),看看是不是你想要的结果,你可以看看String的equalse方法实现

最后一句,只要提供了源代码,凡事都能从源代码中找到答案。
------解决方案--------------------
StringBuffer没有重写equals
------解决方案--------------------
一般来说,equals比较的是值。。

StringBuffer例外,equals没有重写,直接继承的object的equals方法,就是==