String的不变性
什么是String 的不变性:
所谓String 的不变性是指String类的值一旦被初始化就不能被修改,如果再次修改就会产生一个新的类。
如
debug运行发现:虽然str的值表面上是更改了,但是实际上str 的地址已经变了,这就说明str的值已经不是原来的那个了,而是一个全新的对象了
什么导致了String的不变性:
- 我们打开String 的源码分析
- 首先我们可以看出 String类是由 final 这个关键子修饰的 这就说明了String 类绝不可能被继承,换而言之任何对String的操作方法都不会被继承覆写。
- String 底层其实是用 一个char类型的数组value来保存数据值,value是被final修饰了的,这就表明value的值是不可更改的,还有就是value同时还是被private修饰的,并且String类中并没有开放对value赋值的方法 ,这也说明了 value的值一旦确定,就无法更改。
从以上两点就说明可以 String 为什么“不变”