我想问你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); }