改变一个变量和改变一个变量的值的区别
改变一个变量:将该变量指向另一个值的存储空间。
改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值。
Immutability&Mutability
根据我个人的理解,immutability就是在改变变量值的时候能够再申请一个新的空间,而mutability则是对于原存储空间中写入一个新的值。
为了保障安全性,mutability需要采用防御式拷贝,但是又未必需要做改动,因此会产生大量的内存浪费。immutability则不需要,因为每次改变都会重新生成一个新的对象。
典型的mutable类型为StringBuilder,典型的immutable类型为String。
String s="a";
s=s.concat("b");
StringBuilder sb=new StringBuilder("a");
sb.append("b");
final修饰符
final修饰的变量,如x,并不是其值不能够改变,而是x指向的区域不能够改变,但是区域内包含的值是可以改变的。
- final类无法派生子类
- final变量无法改变引用
- final方法无法被子类重写