假设我有一个方法:
public String getString() {
char[] array = new char[]{'a', 'b', 'c'};
return new String(array);
}
数组是否仍在 String 构造函数中复制,或者 Java 编译器是否足够聪明,能够识别数组中的元素无法更改,因此只能引用该数组?
谢谢
最佳答案
由于 java String
类是不可变,构造函数必须复制数组。
否则有人可以持有对数组的引用并修改它:
char[] array = new char[]{'a', 'b', 'c'};
String string = new String(array);
array[1] = 'd'; // array modification must NOT affect the string
关于Java 字符串构造函数优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765831/