final关键字
final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。
-
final变量
final关键字定义的变量必须在声明时对其进行赋值操作。final除了可以修饰基本数据类型的常量,还可以修饰对象引用。由于数组也可以被看作一个对象来引用,所有final可以修饰数组。一旦一个对象引用被修饰为final后,它只能恒定指向一个对象,无法将其改变以指向另一个对象。一个即是static又是final的字段只占据一段不能改变的存储空间。
归纳如下
-
类变量:必须在静态初始块中指定初始值或声明该类变量时指定初始值,而且只能在两个地方的其中之一指定。
-
实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值,而且只能在三个点中的其中之一指定。
public class FinalVariableTest { //定义成员变量时指定默认值,合法 final int a=6; //下面三个变量将在初始化块或构造器中指定默认值。 final String str; final int c; final static double d; { str="Hello"; } static { //在静态初始化块中为类变量指定初始值,合法 d=5.6; } //构造器,可对既没有指定初始值,又没有在初始化块中 // 指定初始值的实例变量指定初始值 public FinalVariableTest() { c=5; } public void changeFinal() { //普通方法不能为final修饰的成员变量赋值 //不能在普通方法中为final成员变量指定初始值 } public static void main(String[] args) { FinalVariableTest b=new FinalVariableTest(); System.out.println(b.a); System.out.println(b.c); System.out.println(b.str); } }
-
-
final局部变量