对与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:/> |
闽公网安备 35060202000074号