final关键字

来源:互联网 发布:人工智能权威杂志 编辑:程序博客网 时间:2024/05/01 15:48

1.final关键字用于域、引用和数组

final关键字用于域时说明这是一个常量,不能被改变的量。用于引用时说明这个引用在初始化指向一个对象后不能再指向 另一个对象,而对象本身是可以改变的,数组也是引用的集合,同理。

public class FinalTest {
final int a=1;
private int b=0;


public static void main(String[] args) {
FinalTest ft1 = new FinalTest();
//ft1.a++; //error: The final field FinalTest.a cannot be assigned

final FinalTest ft2 = new FinalTest();
//ft2 = ft1;      //error: The final local variable ft2 cannot be assigned 
ft2.b++; //ft2的对象可以被改变
}
}


2.空白final

Java允许类定义一个final int a,可以不赋初值,但在用到a之前编译器强迫初始化后才能使用。一般是在构造器里对空白final进行初始化,这样可以更加灵活,当用不同构造方法创造一个对象时,这个a的值可以是不同的,一旦初始化后这个值不能改变。例如:

public class FinalTest {
final int a;

FinalTest(){
a=1;            //必须在此初始化空final
System.out.println(a);
}

FinalTest(int i)
{
a = i;      //必须在此初始化空final
System.out.println(a);
}

public static void main(String[] args) {
FinalTest ft1 = new FinalTest();      //output:1
FinalTest ft2new FinalTest(10); //output:10

//ft1.a++;   //error:a是一个常量
}
}


3.当方法的参数列表被定义为final时,表示这个参数在方法体内部不能被改变。


4.final用于方法

作用一:将方法锁定,确保导出类拥有该方法但无法重写基类的方法,这是一种设计模式。

作用二:代码效率 ,现在已经不需要用final来进行优化了,编译器和JVM会去处理


5.final用于类

表明此类不允许别的类继承它




0 0