final修饰的变量存在哪_「原创」Java并发编程系列06 | 你不知道的final

本文探讨了Java中final关键字的基础应用,如final变量、final方法和final类,并深入讲解了final在并发编程中的作用,包括final域的写入与读取规则,以及其在多线程环境下的安全性。通过实例分析,展示了final如何确保数据一致性,防止重排序带来的问题。
摘要由CSDN通过智能技术生成
c31eeee1b996d37babbb7ca834241831.png

final在Java中是一个保留的关键字,可以修饰变量、方法和类。那么fianl在并发编程中有什么作用呢?本文就在对final常见应用总结基础上,讲解final并发编程中的应用。

1. final基础应用

final变量

final变量只能被赋值一次,赋值后值不再改变。(final要求地址值不能改变)

当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;

如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的

本质上是一回事,因为引用的值是一个地址,final要求地址值不发生变化。

当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但**该引用所指向的对象的内容是可以发生变化的**。本质上是一回事,因为引用的值是一个地址,final要求地址值不发生变化。

final成员变量:两种初始化方式,一种是在变量声明的时候初始化;第二种是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。

final方法

final修饰的方法在编译阶段被静态绑定(static binding),不能被重写。

final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。(注:类的private方法会隐式地被指定为final方法)

final类

final修饰的类不能被继承。

final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。

关于final的几个重要知识点

  • final关键字可以提高性能,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值