对于java开发程序员来说,对于final关键字一定不会陌生,final有不可改变的,終态的意思。
final关键字可以用来修饰非抽象类以及非抽象类成员变量,方法。
下面是他的几种常用用法:
(1)修饰一个类时,表明这个类不能被继承,并且里面所有的方法都默认是final方法
(2)修饰一个类中的方法时,表明这个方法不能被覆写,但是可以被继承。private方法即默认是final修饰的。
使用final方法的原因:出于安全考虑不想让任何人覆写这个方法;高效(涉及编译原理,不够理解,待补充)
(3)修饰成员变量时,表明这个变量一旦赋值就不能够再被改变。另外可以在定义final变量的时候先不给赋值,称为final空白。但是类初始化的时候(比如说构造方法中)一定要赋值,这样既可以保证变量值的灵活性,又可以利用final恒久不变的特性,为我们的开发带来方便。
当作用于局部变量的时候,在使用之前保证其被赋值即可。
(4)修饰参数时,表明这个参数可以被使用,但是在方法内不允许被改变。
注意:引用变量被final修饰以后虽然不能再指向其他引用,但是引用中的内容是可变的。(当然这个不包括引用用static修饰的成员变量,那是常量,是不可改变的)
一个例子:
public class Test {
public static void main(String[] args) {
String a = "hello2";
final String b = "hello";
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));
System.out.println((a == e)); }
输出结果:true
false
说明一旦一个变量用final修饰并且能在编译期间就能知道他的确切值,他就 会把下面所有用到这个变量的地方用这个值来代替。