Java语言文档中提到“如果原始类型或字符串被定义为常量,并且该值在编译时已知,则编译器会用代码中的值替换常量名称。被称为编译时常量。“编译时间常量和变量
所以我的理解是,如果我们有一段代码:
private final int x = 10;
然后,编译器会用文字“10”替换代码“x”的每次出现。 但表示假设不变与在运行时间值初始化,
private final int x = getX(); // here getX() returns an integer value at run-time.
会有任何性能下降(不论如何可以忽略不计)可以比编译时间常数?
另一个问题是,是否代码下面行:
private int y = 10; // here y is not final
在相同的方式编译时由编译器常数治疗?
编辑:最后,我从答案理解为:
final static
手段编译时间常数- 只是
final
意味着它是一个常数,而是在运行时被初始化 - 只是
static
意味着在运行时初始化 - 没有
final
是一个变量,不会被视为常量。
我的理解是否正确?
约2点你就错了! final int a = 1; a是编译时间常量。 final int b; b = 1; b不是 – landry 2013-03-13 03:42:38