java final关键字
final关键字基本用法
final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
修饰类
当用final修饰一个类的时候,表示这个类不能被继承。final类中的成员变量可以根据需要设置为final,并且final类中的所有的方法都会被隐式的指定为final方法不能被重写。
修饰方法
Final修饰的方法不能被重写,但是子类可以用父类中final修饰的方法;
修饰变量
final成员变量表示常量,只能被赋值一次,赋值后不再改变。当final修饰一个基本数据类型,基本数据类型的值一旦初始化后便不能再发生变化,如果修饰的是一个引用类型,则初始化后则不能再指向别的对象,但是引用的对象的内容是可以发生变化的。
final修饰一个成员变量,必须要显示初始化,有两种初始化方式:
- 在声明变量的时候就直接初始化
- 声明的时候不进行赋值,在构造函数中对变量进行赋值
修饰参数
final修饰了参数后,表示该参数是不可以改变的,如果在方法中改变了参数编译器会报错:Cannot assign a value to final variable
类的final变量和普通变量的区别
当final作用于类的成员变量时,成员变量必须在定义时或者构造器中进行初始化赋值,而且一旦赋值后就不能再次被赋值。
final变量和普通变量的区别在于当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时确定。