final可以修饰变量、方法和类
-
final修饰的类无法继承
-
final修饰的方法无法重写,无法覆盖
-
final修饰的变量,只能赋一次值,不能重新赋值
- 1.final修饰引用
- 引用也是变量,final修饰的引用,指向的内存地址(对象)不能再改变,无法再指向其他对象,也无法赋值null。
- final指向的对象不会被垃圾回收器回收,直到当前方法结束后,才会释放空间
- final指向的对象的内部数据可以修改
- 2.final修饰实例变量
- final修饰的实例变量,系统不赋默认值,程序员必须手动赋值。普通的实例变量在创建对象的时候会默认赋值(例1)
- final修饰的实例变量,一般添加static修饰(例2)。static final修饰的变量称为“常量”。
- 常量:常量名建议全部大写,单词间用下划线连接。
- 常量的值不能变。常量和静态变量都存储在方法区,在类加载时初始化。用
类名.
就可以调用。 - 常量一般是public公开的
- 1.final修饰引用
//例1
//赋值方法一
final double height=1.8;
//赋值方法二
final double weight;
public User(){
//系统赋默认值是在这个时候,所以在这时赋值也可以
this.weight=80;
}
//例2
class Chinese
{
String idCard;
String name;
//final修饰的变量不能重新赋值,所有新建对象的country都是中国
//为了节省内存空间,把final定义的变量定义为静态的,储存在方法区,就不用每个对象都要再存一份country
public static final String COUNTRY="中国";
}
来源:CSDN
作者:立flag的咸鱼
链接:https://blog.csdn.net/weixin_41988224/article/details/104742555