StringBuilder sb = new StringBuilder();
sb.append("Hello ");
sb.append(“World”);
String result = sb.toString();
System.out.println(result);
也就是说,加号操作会被优化基于StringBuilder的操作,而并不是上面提到的String.valueOf操作。
那么,上面为null的情况也就等价于下面的操作了:
StringBuilder sb = new StringBuilder(null);
sb.append(“hello”);
sb.append(" world");
String result = sb.toString();
System.out.println(result);
此时,我们再看一下StringBuilder(null)这个构造方法的底层实现,最终调到它的父类AbstractStringBuilder中的append方法:
public AbstractStringBuilder append(String str) {
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}
对应的appendNull方法实现为:
private A