java文档中提到
The static modifier, in combination with the final modifier, is also used to define constants.
我只是想知道,java中可以单独使用final关键字来定义常量吗?我知道用 final 关键字和没有 static 关键字声明的变量不能改变,但它算作一个常量吗?
最佳答案
您需要static 关键字来消除Class 实例的上下文。 看看下面的代码:
public class Main {
public static final String CONST;
static {
if((System.currentTimeMillis() % 2) == 0) {
CONST = "FOO";
}
else {
CONST = "BAR";
}
}
public final String CONST2;
public Main(){
if((System.currentTimeMillis() % 2) == 0) {
CONST2 = "FOO";
}
else {
CONST2 = "BAR";
}
}
虽然创建 Main 的多个实例将导致 CONST2 的值不同,但 CONST 将在类加载时初始化,因此保持不变在 Main 的几个实例中相同。
更有趣的是,如果涉及多个 ClassLoader,您甚至可能有一个具有不同值的 static final 变量。
因此,Java 中的常量是用常量值初始化的最终静态变量。
关于java - final关键字可以单独用于在java中定义常量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453413/