final关键字的作用都有那些?

1. 修饰变量 当一个变量被声明为 final 时,它的值一旦赋值后就不能再更改。这适用于基本数据类型和引用类型。修饰‌引用类型时,表示该引用无法再指向其他对象,但引用所指向的对象的内容可以发生改变。

2. 修饰方法 被 final 修饰的方法不能被子类重写。这有助于防止改变方法的行为。

3. 修饰类 当一个类被声明为 final 时,不能被继承。这可以防止类的扩展,确保其行为不被改变。

4. 修饰参数 在方法参数中使用 final 可以防止在方法内部修改该参数的值,增加代码的可读性和安全性。

5.内存可见性 在多线程环境中,使用 final 变量可以确保在一个线程中初始化的对象,对其他线程是可见的。这是因为在 Java 内部,final 变量的写操作和对该变量的读取会添加内存屏障,从而确保:其他线程看到 final 变量的值时,一定是对象的完全初始化状态。

6. 构造函数和 final 变量  如果一个对象的构造函数中初始化了 final 变量,那么一旦构造函数完成,这个对象的 final 变量的值对所有线程都是可见的。这是因为 JVM 会在构造器完成后插入一个内存屏障,确保所有写入的字段都对其他线程可见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值