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

stringbuffer ==, equals 请指点
Java code

package t001;

public class C01 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         StringBuffer b1 = new StringBuffer("abc");
         StringBuffer b2 = new StringBuffer("abc");
         System.out.println(b1==b2);  //false
         System.out.println(b1.equals(b2)); //false
         
         StringBuilder b3 = new StringBuilder("def");
         StringBuilder b4  = new StringBuilder("def");
         System.out.println(b3==b4);  //false
         System.out.println(b3.equals(b4)); //false
    }

}




为什么都是false?
尤其是用equals 方法也是false
谁提点一下 ? 谢谢

------解决方案--------------------
"==" 是false是因为比较的是两个不同的对象,地址不一样,所以是false。
"equals" 是false是因为StringBuffer类本身没有覆盖Object类的equals方法,即使用的是equals的默认实现,就是直接使用"==",所以结果是和"=="一样的。
------解决方案--------------------
探讨
...又被搞晕了
== 比较的是什么?
equals 比较的是什么?
谁说的清楚点?

------解决方案--------------------
探讨
这StringBuffer是一种对象,不能用==来判断
还有也不能用equals,这是用来判断字符串的
这里有几种办法来解决,
1。重写对象的大小比较,=号这个方法
2. 我一直没有用这个来比较stringbuffer所以不知道StringBuffer有没有实现了camparable接口,不知道能不能用这个方法,
3. 最简单的就是b3.toString().equals(b4.toString());