1.可变类型(mutable type)与不可变类型(immutable type)
- 不变数据类型:一旦被创建,其值不能改变(可以修改指向,内存中存储位置发生了改变)
- 可变数据类型:拥有方法可以修改自己的值/引用
其中基本数据类型都是不可变类型,例如String类;
引用(对象)数据类型既有可变类型,也有不可变类型,例如StringBuilder类;
2.final关键字
总的来说就是限制了变量的引用不可更改
总结:
- final + 基本数据类型 / 不可变的引用数据类型:如 final int——不可修改该变量
- final + 可变的引用数据类型:final List——只限制了引用不可更改,但是并不限制引用指向的内存里的数据的修改
根据个人理解:final就像一个钉子,引用就像一条绳子,当把绳子连上一个对象后(感觉有点奇怪。。)加上final之后就是用钉子把绳子钉死了,这条绳子不能断,如果这个对象是一个会七十二变的对象(mutable type),那你随便去变化,反正你还是你,你还是挣脱不了这跟绳子,如果是不可变对象(immutable type)那就没办法了,只能这样了,你跑不了的。