我想问你StringBuilder sb=new StringBuilder("");和
StringBuilder sb=new StringBuilder();这两者的区别是啥。请讲详细点 谢谢!!

解决方案 »

  1.   


    public StringBuilder(int capacity) {
    super(capacity);
    }
    AbstractStringBuilder(int capacity) {
            value = new char[capacity];
    }
    public StringBuilder(String str) {
    super(str.length() + 16);
    append(str);
    }
    public StringBuilder append(String str) {
    super.append(str);
            return this;
    }
    public AbstractStringBuilder append(String str) {
    if (str == null) str = "null";
            int len = str.length();
    if (len == 0) return this;
    int newCount = count + len;
    if (newCount > value.length)
        expandCapacity(newCount);
    str.getChars(0, len, value, count);
    count = newCount;
    return this;
    }
    虽然走的路不一样,最终的结果是一样的。
      

  2.   


    public StringBuilder() {
    super(16);
    }
      

  3.   

    你可以看StringBuilder的源码,默认空的构造方法 是将StringBuilder的容量capacity设置为16 然后返回对象实例,以String为参数的构造方法是构造一个capacity为字符串长度+16的对象,然后将 String字符串append进去,对于你说的这两者因为String为""长度为0,所以效果一样,不过这个多执行了一步append方法而已public StringBuilder() {
            super(16);
        }  /**
         * Constructs a string builder with no characters in it and an
         * initial capacity specified by the <code>capacity</code> argument.
         *
         * @param      capacity  the initial capacity.
         * @throws     NegativeArraySizeException  if the <code>capacity</code>
         *               argument is less than <code>0</code>.
         */
        public StringBuilder(int capacity) {
            super(capacity);
        }