当前位置: 代码迷 >> J2EE >> 关于StringBuilder 的 请高手 解答!解决办法
  详细解决方案

关于StringBuilder 的 请高手 解答!解决办法

热度:86   发布时间:2016-04-22 02:48:59.0
关于StringBuilder 的 请高手 解答!!!!
我想问你StringBuilder sb=new StringBuilder("");和
StringBuilder sb=new StringBuilder();这两者的区别是啥。

请讲详细点 谢谢!!

------解决方案--------------------
Java code
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;}虽然走的路不一样,最终的结果是一样的。
------解决方案--------------------
Java code
public StringBuilder() {    super(16);}
------解决方案--------------------
你可以看StringBuilder的源码,默认空的构造方法 是将StringBuilder的容量capacity设置为16 然后返回对象实例,以String为参数的构造方法是构造一个capacity为字符串长度+16的对象,然后将 String字符串append进去,

对于你说的这两者因为String为""长度为0,所以效果一样,不过这个多执行了一步append方法而已
Java code
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);    }
  相关解决方案