final关键字详解
一. 使用
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
下面就从这三个方面来了解一下final关键字的基本用法。
1.修饰类:
修饰一个类的时候,该类不可被继承. 需要注意的是: final修饰的类,其所有的成员方法都会被隐式的指定为final 方法, 成员变量可以通过自己的需求来决定.
注意! 不建议使用final修饰类除非真的需求,或安全考虑 (很少有不对代码维护的, 不要给后辈留坑哈 ~~ 哈哈哈哈哈)
2.修饰方法:
Java编程思想里对final修饰方法有解释: “使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了”
也就是说, 当一个类被继承后, 不想让子类重写父类的方法, 就可以用final修饰这个方法!
注意: private 修饰的方法会被隐式的指定成final…
3.修饰变量:
final关键字修饰变量是在java开发中使用的最多的, 如果使用fianl修饰基本变量, 数值被初始化之后就不能再更改了, 如果是引用类型的, 初始化之后不能指向另一个对象(编译不通过~~哈哈哈)
二. 深入理解关键字
- 类的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摸鱼结束,下班!!! 冲鸭~!!!