1.final的语义:
java中final修饰符的语义是:不可变的。
在java中,final可以修饰:变量,方法和类。分别代表,变量是不可变的;方法是不可被重写的;类是不可被继承的。
2. final修饰变量:
当final修饰成员变量时,修饰类变量和实例变量,初始化的时机是不同的。
实例变量可以在声明时、初始化块,构造器中赋初始值;
而类变量在 声明时 只可以在 声明时 ,静态初始化块中初始化。
3. 宏替换:
final变量的语义和常量是很像的。
可是,在某些情况下,final变量是会在编译时替换为“常量”。就是在,编译时,我们能够直接确定final变量的值就可以了。哪怕是该final变量的值是某些常量通过简单的运算得到的,也可以。
4. 闭包(内部类)
在内部类中引用其他变量,这些变量必须是用final修饰的。因为,我们要保证闭包能够脱离主类的生命周期而存在。那这就要求,所引用的这些外变量必须是常量。