public AbstractStringBuilder append(String str) {
// 如果 str 为 null ,则在字符数组中添加 'n''u''l''l'
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}```
字符串参数为 null 时调用了 appendNull(); 方法
```java
private AbstractStringBuilder appendNull() {
int c = count;
ensureCapacityInternal(c + 4);
// 这里将内部字符数组赋值给局部变量
final char[] value = this.value;
// 然后通过局部变量向内部数组添加字符
value[c++] = 'n';
value[c++] = 'u';
value[c++] = 'l';
value[c++] = 'l';
// 这里的 count 也是先赋值给局部变量,为什么不直接使用 count 呢?
count = c;
return this;
}```
我的疑问是 appendNull 方法中为什么要创建一个 final char[] value 这样一个局部变量来操作内部数组而不是直接使用 this.value ?这么做的用意是什么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.