final关键字
1.final修饰的变量?
- final修饰的局部变量,只能赋一次值
- final修饰的局部变量跟C语言中const修饰的变量类似
2.final修饰的方法?
- final修饰的方法无法被覆盖,重写
3.final修饰的类?
- final修饰的类无法被继承
4.final修饰的引用?
- final修饰的引用只能指向一个对象(引用存的地址只能赋值一次)
- 意味着final修饰的引用指向的对象不会被垃圾回收器回收,直到方法结束
- 指向不能修改,但该对象内的数据可以修改,跟final无关
- 本质其实就是final修饰的变量只能赋值一次
5.final修饰的实例变量?
-
final修饰的实例变量必须手动赋值,否则编译会报错
- final修饰的实例变量在构造函数中不会自动赋值,如果自动初始化,永远都是0值,不能被修改,没有意义
-
final修饰的实例变量一般添加static修饰
- 因为final修饰的实例变量不能修改,如果不用static修饰,每次创建对象都开辟一份空间存储它,浪费空间
- 而用static修饰,只在方法区开辟一份内存存储,节约空间
-
static final联合修饰的变量称为常量
- 常量建议全部大写,单词间用下划线连接