
先看底层(1.8为例)
public final class String
implements java.io.Serializable, Comparable, CharSequence
private final byte[] value;
误区:不能修改的原因是因为final关键字修饰了value数组。final修饰value数组只能说明value所指的引用地址不可修改,数组对应堆中的内容是可以变的
例如:
final int[] array = {1, 2};
int[] test = {1, 2, 3};
array = test //error
array[0] = 2; //ok
// {2, 2}
真实原因: