Mutability and Immutability
首先得明白
a.改变一个变量:将该变量指向另一个值的存储空间
b.改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值
final:不能改变一个变量(a)
那么对于对象的Mutability and Immutability
不变对象:一旦被创建,始终指向同一个值/引用
可变对象:拥有方法可以修改自己的值/引用
例如,String是不变对象,相反StringBuilder是可变对象:
那么改变它们时的区别:
![](https://img-blog.csdnimg.cn/570d54e601ec413cab0d77cd4f7b1dd1.png)
(图片来自ppt)
可以发现有明显的不同,一个是在原位置改动,那么当多个引用指向这个位置的时候,就会出错;另一个创建了一个新的对象,则相对更安全!
不安全的例子如下
(图片来自ppt)
这个例子就表现出Mutability的不安全性
但是!
使用不可变类型,对其频繁修改会产生大量的临时拷贝,这会降低效率
而可变类型最小化拷贝以提高效率!
这就要求我们折中,看你看重哪个质量指标(安全 or 效率)
以上就是关于
Mutability and Immutability
的全部思考和整理!