【发布时间】:2015-11-16 13:40:55
【问题描述】:
我已经阅读了 Java 中的 final 变量应该被实例化以编译时间常量表达式。我不明白什么是编译时常量表达式。
class A {
int i;
int j = i * 5;
}
`i * 5 是编译时常量表达式吗?
【问题讨论】:
标签: java constants compile-time-constant
我已经阅读了 Java 中的 final 变量应该被实例化以编译时间常量表达式。我不明白什么是编译时常量表达式。
class A {
int i;
int j = i * 5;
}
`i * 5 是编译时常量表达式吗?
【问题讨论】:
标签: java constants compile-time-constant
“编译时常量表达式”是可以在编译期间计算的值。比如int MINUTES_IN_DAY = 24 * 60;
至于您的阅读,最终变量应始终以该形式实例化:这是不正确的概括。在许多情况下,您需要 final 在运行时进行评估,例如在设置 Runnables 时。
请注意,静态最终变量也不需要是编译时常量:您可以使用静态初始化器对其进行初始化。
【讨论】: