final关键字
基本用法:
1、final修饰类表示类不能被继承
2、final修饰的方法不能被覆盖
3、final修饰的变量不能修改,是指引用的地址值不能修改,并且final修饰的变量必须初始化(1、直接赋值 2、在构造方法中赋值)
final也可以用于提高运行效率
4、直接赋值的final常量在编译阶段就会赋值。
编译之后用反编译工具打开.class文件
可以清楚的看到在testFinalProperty这个方法体中str1直接用"test"代替,在编译阶段就被赋值了。
5、方法的内联
final修饰的方法,虚拟机不会执行正常的方法调用(入栈出栈,方法返回值),会直接转化为内联调用,直接展开方法,减少调用开销,已空间换时间,如果final定义的方法方法体很大时这样得不偿失。