- final可以修饰类,该类不能被继承。
- final可以修饰方法,该方法不能被重写。(覆盖,复写)
- final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。
面试题:
final修饰局部变量,修饰基本类型,基本类型的值不能发生改变;修饰引用类型,引用类型的地址值不能改变,但是该对象堆内存的值是可以改变的。
- final修饰变量的初始化时机
A:被final修饰的变量只能赋值一次。
B:在构造方法完毕前。(非静态的常量)
class Demo {
//int num = 10;
//final int num2 = 20;
int num;
final int num2;
{
//num2 = 10;
}
public Demo() {
num = 100;
//无法为最终变量num2分配值
num2 = 200;
}
}
class FinalTest2 {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.num);
System.out.println(d.num2);
}
}
/*被final修饰的变量只能被赋值一次,若num2定义为final,并且在构造代码块中为num2赋值,那么构造方法中的赋值语句就会报错
*/