我需要使用这个方法,在查看源代码后,我注意到了一个对我不熟悉的
在该方法中:
StringBuilder
初始化(我通常使用无参构造函数从StringBuilder
创建新实例,即new StringBuilder()
)。在该方法中:
StringBuilder sb = new StringBuilder(items.size() << 3);
从JavaDoc中可以看到:
java.lang.StringBuilder.StringBuilder(int capacity)
构造一个没有任何字符的字符串生成器,并使用capacity参数指定的初始容量。
为什么需要在这里进行位移操作?
源代码:
/** Creates a backslash escaped string, joining all the items. */
public static String join(List<?> items, char separator) {
StringBuilder sb = new StringBuilder(items.size() << 3);
boolean first=true;
for (Object o : items) {
String item = o.toString();
if (first) {
first = false;
} else {
sb.append(separator);
}
for (int i=0; i<item.length(); i++) {
char ch = item.charAt(i);
if (ch=='\\' || ch == separator) {
sb.append('\\');
}
sb.append(ch);
}
}
return sb.toString();
}