java基础之关键字final
2018-01-09 本文已影响0人
巴拉巴拉老男人
final关键字最常修饰的是变量和方法,也可以修饰类,下面我们从这三个方面来了解一下关键字final的基本用法
- 修饰变量
对于一个final变量,分为以下两种情况:
1. 如果是基本类型的变量,则其值一经初始化之后是不可以改变的
2. 如果是引用类型的变量,则对其初始化之后便不能再让其指向另一个对象
public class FinalVariableTest
{
private final int f1 = 1;
private final List<String> l = new ArrayList<String>();
public static void main(String[] args)
{
FinalVariableTest fvt = new FinalVariableTest();
// 编译错误 The final field FinalVariableTest.f1 cannot be assigned
// fvt.f1 = 3;
fvt.l.add("123");
// 编译错误 The final field FinalVariableTest.l cannot be assigned
// fvt.l = new ArrayList<>();
}
}
- 修饰方法
对于一个final修饰的方法,也分为两种情况:
1. 把方法锁定,以防止任何继承类修改它的定义
2. 效率 在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。
-
修饰类
当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。