对与java中的final变量,java编译器是进行了优化的。每个使用了final类型变量的地方都不会通过连接而进行访问。比如说Test类中使用了Data类中一个final的int数字fNumber=77,这时候,java编译器会将77这个常数编译到Test类的指令码或者常量池中。这样,每次Test类用到fNumber的时候,不会通过引用连接到Data类中进行读取,而是直接使用自己保存在类文件中的副本。
用程序说话:
C:>javac Test.javaTest.java:
Data.java:
用程序说话:
C:>javac Test.javaTest.java:
: [
复制到剪贴板 ]
public class Test{
public static void main(String[] args){
System.out.println(Data.fNumber);
}
}
public static void main(String[] args){
System.out.println(Data.fNumber);
}
}
Data.java:
: [
复制到剪贴板 ]
public class Data{
public static final int fNumber=77;
}
执行命令和结果:
public static final int fNumber=77;
}
引用:
C:>javac Test.javaC:>javac Test.java
C:>java Test
77
C:>
C:>java Test
77
C:>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7178747/viewspace-160941/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7178747/viewspace-160941/