2020-06-08 11:04发布
可以查看一下String的源码。
1、看到String类被final修饰。这里你就要说出被final修饰的类不能被继承,方法不能被重写,变量不能被修改。
2、看到final修饰的char[]代表了被存储的数据不可更改性。但是:虽然final代表了不可变,但仅仅是引用地址不可变,并不代表了数组本身不会变。所以在这里只有final修饰是不能确保string的不可变性。还需要privite修饰。才能确保不可变性。
但其实也可让他可变:用反射, 可以反射出String对象中的value属性, 进而改变通过获得的value引用改变数组的结构。
最多设置5个标签!
可以查看一下String的源码。
1、看到String类被final修饰。这里你就要说出被final修饰的类不能被继承,方法不能被重写,变量不能被修改。
2、看到final修饰的char[]代表了被存储的数据不可更改性。但是:虽然final代表了不可变,但仅仅是引用地址不可变,并不代表了数组本身不会变。所以在这里只有final修饰是不能确保string的不可变性。还需要privite修饰。才能确保不可变性。
但其实也可让他可变:用反射, 可以反射出String对象中的value属性, 进而改变通过获得的value引用改变数组的结构。
一周热门 更多>