final 关键字使用说明
- final可以用来修饰成员变量, 局部变量,类和方法。
- final修饰的变量只能赋值一次,不能再次赋值。局部变量必须在声明的时候赋值,成员变量可以在声明或者类的构造方法中赋值。
- 匿名内部类使用外部变量时,变量需要声明为final类型。
- final修饰的局部变量,并不作为gc时的root根,在使用完成之后也会被回收掉。
- final修饰的局部变量和方法参数的意义在于得到一个变量的引用拷贝,并维护这个变量的生命周期。
- 接口中声明的所有变量默认是final的
- byte运算会自动提升为int,而final修饰的变量不会提升类型,当2个final修饰相加时候会根据左边变量的类型而转化,作为这2个final变量的最终类型,final int和final byte相加是整形和byte型都可以,不需要强制转换。
- final修饰变量是指变量指向的引用不可变,而引用的对象内部数据可以变化。
- final修饰的类不能被继承,成员方法默认都是final的,如java.long.String类
- 方法被final修饰后,一是不能被子类重写;二是编译的时候会尝试内联,对于提升Java的效率是非常重要;三是静态绑定,也会提升运行效率