StringBuffer buff = new StringBuffer();
不要使用buff.length()>0方法,还有什么方法么?
似乎equals 和 == 都不行啊,请教在String str = new String()中
str.equals("")则可以判断出str为空

解决方案 »

  1.   

    不用length
    的话还真不会了MARK下
      

  2.   

    StringBuffer类是可变的,不会在字符串常量池中,而是在堆中,不会留下一大堆无用的对象。
    基于上述情况,我想不常用判断StringBuffer。如果非要判断的话,一般都会toString之后再说。
      

  3.   

    终于明白了,原来Object的equals()方法跟 == 是一样的 ,
    public boolean equals(Object obj) {
        return (this == obj);
        }
    StringBuffer没有重写equals方法,所以
    StringBuffer a = new StringBuffer(“a”);
    StringBuffer b = new StringBuffer(“a”);
    a.equals(b);这句跟a==b的效果一样,返回是false。string则重写了equals方法。
    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = offset;
            int j = anotherString.offset;
            while (n-- != 0) {
                if (v1[i++] != v2[j++])
                return false;
            }
            return true;
            }
        }
        return false;
        }
    至于为什么StringBuffer不重写equals方法呢?难道toString已经包含了,
    还是因为StringBuffer是可改变的?希望高手解答
      

  4.   

    你想比较两个StringBuffer实例是否值一样?就还是通过toString来比较。
    另外,至于StringBuffer为什么不提供类似String的比较功能,毕竟StringBuffer不是String,用途不一样,正如2楼说的一样
    再说,也没多少必要去搞清楚这个