String类型为什么是不可变得?

2020-06-08 11:04发布

1条回答
那年
2020-06-08 14:19

可以查看一下String的源码。

image.png

1、看到String类被final修饰。这里你就要说出被final修饰的类不能被继承,方法不能被重写,变量不能被修改。

2、看到final修饰的char[]代表了被存储的数据不可更改性。但是:虽然final代表了不可变,但仅仅是引用地址不可变,并不代表了数组本身不会变。所以在这里只有final修饰是不能确保string的不可变性。还需要privite修饰。才能确保不可变性。

但其实也可让他可变:用反射, 可以反射出String对象中的value属性, 进而改变通过获得的value引用改变数组的结构。

一周热门 更多>