突然看到String的toCharArray方法的实现,但是想不通为啥要多此一举:
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
直接返回value不就得了:
public char[] toCharArray() {
return value;
}
修改:
经评论提醒,Java 中没有引用传递,是我表达失误。
数组是引用类型,也是值传递,只是 值 就是
value
的地址,因此修改会影响到value
。原答案:
因为 Java 中数组实质上是 Array 类的实例,如果直接返回
value
,那么这会是一个引用传递,一旦你修改了toCharArray()
返回值里某个位置上的字符,那个String
实例的值(即value
)也会跟着变动。