str = "/u1D56B";
StringBuilder builder = new StringBuilder(); //首先构建一个空的字符串构建器
char ch = 58;
builder.append(ch); //当每次需要添加一部分内容时,就调用append方法。
builder.append(str);
String completedString = builder.toString();//在需要构建字符串时就调用toString方法,toString方法内部会创建一个String对象,并使这个对象包含字符序列,最后将存储有该对象的String类型的变量返回。在调用toString方法的当前行使用一个String类型的变量承接并存储
System.out.println(completedString);
System.out.println(":".codePointAt(0));
溯源
@Override
public StringBuilder append(char c) {
super.append(c);
return this;
}
@Override
public AbstractStringBuilder append(char c) {
ensureCapacityInternal(count + 1);
value[count++] = c;
return this;
}
private void ensureCapacityInternal(int minimumCapacity) {
// overflow-conscious code
if (minimumCapacity - value.length > 0) {
value = Arrays.copyOf(value,
newCapacity(minimumCapacity));
}
}
char[] value;
append方法传入的字符串先被转换成char数组,每次调用反复复制一个新的长度增加一的char数组,把字符的char值存入末位,复制次数为非空字符串的长度,复制结束后返回......