美文网首页
为什么String是不可变的?

为什么String是不可变的?

作者: iwlei | 来源:发表于2019-10-25 14:50 被阅读0次

先放一段String类的源码


image.png

通过源码可以发现,String类有一个命名为value的char数组的成员变量,并且是final修饰的。

如果被final修饰的成员变量是基本类型,那么这个成员变量一旦被赋值就不能再改变。但数组并不是基本类型,而是引用类型,所以value即使被final修饰,它里面的元素依然是可以改变的。

之所以说String类是不可变的,是因为String类没有对外提供修改value属性的方法(如setter方法),我们无法在外部去改变value的内容。

那String类是觉得不可变的吗?也不是,其实可以通过反射去修改String类对象的值。代码如下:


image.png

执行结果:


image.png

相关文章

网友评论

      本文标题:为什么String是不可变的?

      本文链接:https://www.haomeiwen.com/subject/havsvctx.html