最终变量只能显式初始化一次。声明为final的引用变量永远不能重新分配为引用其他对象。但是,可以更改对象内的数据。因此,可以更改对象的状态,但不能更改引用的状态。对于变量,最终修饰符通常与static一起使用,以使常数成为类变量。
因此,一旦声明了最终变量,则必须在声明或使用构造函数时初始化最终变量。
否则,可能会出现编译时错误,提示“空白的最终字段编号可能尚未初始化”。
public class Test{ final int num; public static void main(String args[]){ Test t = new Test(); System.out.println(t.num); } }
C:\Sample>javac Test.java Test.java:2: error: variable num not initialized in the default constructor final int num; ^ 1 error