可能很多人对于final的使用都停留在八股文的基础理解:被final修饰的类不可以被继承,
被final修饰的方法不可以被重写,被final修饰的变量不可以被改变.
但是后面的却不是很理解:如果修饰引用,那么表示引用不可变,引用指向的内容可变.被final修饰的方法,JVM会尝试将其内联,以提高运行效率,被final修饰的常量,在编译阶段会存入常量池中。
首先我们来理解final修饰引用变量
这里我们来看一个例子:
int[] a = {1,2,3};
a[0]= 10;
//是允许的
a = {2,3};
//是不允许的
可以看出来,我们对引用本身的内容是可以修改的,但是由于要对修改成为另外一个对象,那么就不能成功。
使用情况:其初始化可以在两个地方:
(1)其定义处,也就是说在final变量定义时直接给其赋值;
(2)构造方法中;
当一个方法被final修饰后。表示该方法不能被子类重写。final方法有一个优点是比非final方法要快,由于在编译时已经静态绑定了,不须要在执行时在动态绑定。
【final关键字的使用详解】使用情况:
那么也表示这样的方法提供的功能已经满足当前要求,不需要再进行扩展了,并且也不允许任何从这个类继承的类来重写这种方法,但是继承依旧能够继承这个方法,也就是表示能够直接使用。
推荐阅读
- 我的|RPMBUILD 打包
- 笔记|Javaweb详解一
- 【Netty】二、ByteBuf
- Java|阿里首席架构师解读(Spring Cloud与Docker微服务架构实战)
- 面试官竟然问我消息队列为啥会丢失消息(幸亏我总结了全套八股文)
- Java 递归实例操作-查询层级菜单
- RocketMQ 消息发送设计和原理详解 源码剖析
- 面试|基于SSM框架的管理系统【完整项目源码】
- 【Java面试】TCP协议为什么要设计三次握手()