软件构造mutable和imutable类型的简析
mutable和imutable(可变性和不可变性)
- 改变一个变量:是将该变量指向另一个值的存储空间
- 改变一个变量的值:是指将该变量当前指向的值的存储空间中写入一个新的值
【imutability】
- final变量能被显示地初始化并且只能初始化一次。即final变量是不变数据类型,一旦被创建,值不可修改。
- 基本数据类型及其封装对象类型都是不可变地
- 不可变地引用是指一旦指定引用位置之后,不可再次指定。
- 如果编译器不能确定final变量不会改变,就提示错误,静态类型检查的一部分。
- PS:
- final类无法派生子类
- final变量无法改变值/引用
- final方法无法被子类重写
歪解:final就是最后的呀,最后的当然不能被修改了~~
【mutability】
- 包含两种:
- 不变类型:一旦被创建,始终指向同个值/引用
- 可变类型:拥有方法以修改自己的值/引用
- String与StringBuilder
- String:不可变数据类型,修改时必须创建一个新的String对象
- StringBuilder:可改变的数据类型,可以直接修改对象的值
抄自网络
- String:不可变数据类型,修改时必须创建一个新的String对象
【可变性与不可变性的优缺点]
- 可变数据类型最小化的拷贝以提高效率;使用 不可变类型,对其频繁修改会产生大量的临时拷贝 (需要垃圾回收 )
- 可变数据类型,可获得更好的效能;
- 可变数据类型也适合在多个模块之间共享数据;
- 不可变数据类型更安全,更易于理解,也更方便改变;