final关键字用法及详解

final关键字详解

一. 使用
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
下面就从这三个方面来了解一下final关键字的基本用法。
1.修饰类:
修饰一个类的时候,该类不可被继承. 需要注意的是: final修饰的类,其所有的成员方法都会被隐式的指定为final 方法, 成员变量可以通过自己的需求来决定.
注意! 不建议使用final修饰类除非真的需求,或安全考虑 (很少有不对代码维护的, 不要给后辈留坑哈 ~~ 哈哈哈哈哈)
在这里插入图片描述

2.修饰方法:
Java编程思想里对final修饰方法有解释: “使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了”
也就是说, 当一个类被继承后, 不想让子类重写父类的方法, 就可以用final修饰这个方法!
注意: private 修饰的方法会被隐式的指定成final…
在这里插入图片描述

3.修饰变量:
final关键字修饰变量是在java开发中使用的最多的, 如果使用fianl修饰基本变量, 数值被初始化之后就不能再更改了, 如果是引用类型的, 初始化之后不能指向另一个对象(编译不通过~~哈哈哈)
在这里插入图片描述
在这里插入图片描述

二. 深入理解关键字

  1. 类的final变量和普通变量有什么区别?
    当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。
    举个栗子 !
    在这里插入图片描述

由结果看: 当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。因此在上面的一段代码中,由于变量b被final修饰,因此会被当做编译器常量,所以在使用到b的地方会直接将变量b 替换为它的值.d的值只有在运行时才能确定.
注意: 最有在编译期间确定final变量的值才会如此优化!

2.被final修饰的引用变量,所指向的对象内容可变吗?
可变!
直接上图~
在这里插入图片描述

3.容易混淆的final和static
final和static在修饰变量时有根本的不同, final表示为不可变, 可以看做为一个常量.
扩展一下static的内容哈~~~~~
static表示为静态的, 被static修饰的成员变量就不属于某个具体的对象啦, 而是属于某个类. static相关的其他的下次被强制加班的时候再写~
End ~~~~~~~~~~~~

最近公司要求强制加班但是我又没事儿干~ 就写点儿博客啥的吧哈哈, 以后会持续更新, 大家多多点击给点儿动力呀,
主要是前后端的开发, 近期项目: VUE2 + SpringCloud & Alibaba + nacos …

O K摸鱼结束,下班!!! 冲鸭~!!!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值