對與java中的final變量,java編譯器是進行了優化的。每個使用了final類型變量的地方都不會通過連接而進行訪問。比如說Test類中使用了Data類中一個final的int數字fNumber=77,這時候,Java編譯器會將77這個常數編譯到Test類的指令碼或者常量池中。這樣,每次Test類用到fNumber的時候,不會通過引用連接到Data類中進行讀取,而是直接使用自己保存在類文件中的副本。
用程序說話:
C:\>javac Test.javaTest.Java:
public class Test{
public static void main(String[] args){
System.out.println(Data.fNumber);
}
}
Data.Java:
public class Data{
public static final int fNumber=77;
}
執行命令和結果:
C:\>javac Test.javaC:\>javac Test.Java
C:\>Java Test
77
C:\>