Java字符串构造函数优化

nik*_*pen 2 java string optimization

说我有一个方法:

public String getString() {
    char[] array = new char[]{'a', 'b', 'c'};
    return new String(array);
}
Run Code Online (Sandbox Code Playgroud)

数组是否仍然在String构造函数中复制,或者Java编译器是否足够智能,以识别数组中的元素不能更改,因此它只能引用数组?

谢谢

Ren*_*ink 6

由于java String类是不可变的,因此构造函数必须复制数组.

否则,有人可以持有对数组的引用并进行修改:

char[] array = new char[]{'a', 'b', 'c'};
String string = new String(array);

array[1] = 'd'; // array modification must NOT affect the string
Run Code Online (Sandbox Code Playgroud)