final关键字详解+final与static的区别?
final关键字的引入:看看如下代码,思考dos窗口打印的结果是什么?
现在我们有一个需求,就是子类每次调用show方法时都是调用父类Fu中的show方法,那么要如何实现呢?
这个时候,final关键字就闪亮登场!
final关键字的作用
面试题1:以下代码输出结果是?
答案:编译不通过,解释在上面
面试题2:以下代码输出结果是?
答案:编译不通过,解释:final修饰引用类型时地址值不能被改变
final修饰变量的初始化时机
思考cmd窗口如此输出的原因
总结:1.被final修饰的变量只能赋值一次
2.被final修饰的变量必须在对象构造完成前初始化,也就是必须在定义时赋值或者在构造方法中赋值。
static与final的区别?
有兴趣的可以看看如下代码,并思考输出结果的原因?
![]()
结论:每次运行程序:static修饰的引用类型的变量在内存中只有一份内存拷贝,但是final修饰的不然。