Java 如果不使用文字,如何定义常量?

Java 如果不使用文字,如何定义常量?,java,constants,final,literals,Java,Constants,Final,Literals,我正在努力理解如何在不使用文字的情况下定义常量。final int A=1+1是否算数?Java语言规范定义。第一项是“原语类型的文字和字符串类型的文字”,因此这些文字也是常量。同样,它列出了“引用常量变量的简单名称(§6.5.6.1)”。但是,还有许多其他形式的表达式,它们仅使用某些也定义为常量表达式的运算符组成。有关完整规则,请参见链接部分。常量是一个不变的值: int getRandomNumber() { //chosen by a fair dice roll, guarant

我正在努力理解如何在不使用文字的情况下定义常量。
final int A=1+1是否算数?

Java语言规范定义。第一项是“原语类型的文字和字符串类型的文字”,因此这些文字也是常量。同样,它列出了“引用常量变量的简单名称(§6.5.6.1)”。但是,还有许多其他形式的表达式,它们仅使用某些也定义为常量表达式的运算符组成。有关完整规则,请参见链接部分。

常量是一个不变的值:

int getRandomNumber() {
    //chosen by a fair dice roll, guaranteed to be random
    return 4; //<- literal
}

public final int random = getRandomNumber(); //<- constant

但是任何变量都可以通过声明它为
final

而成为常量。好吧,你可以很容易地得到一个非文字常量。拿这个来说:

public class A {
    public static final int A_CONSTANT = new java.util.Random().nextInt();
}

A.A_常量
当然是一个常量——它是
final
static
,所以一旦加载了该类,它就不会改变!然而,它不是一个文本——它在运行时是常量,而不是编译时。每次加载
A
时,
A_常量
都有一个新的常量值,而文本值总是正好是4。

文本不是常量,而是常量。(不带a)常量是可以用文字表示的值的名称。(或另一个常量)

你说的“常量”是什么意思?请用java举例说明你的问题。
(3+2)
也是常量,但不是文字;此外,它也不会在运行时进行计算。您能否举例说明如何在运行时创建常量,并解释您的确切含义?@OP如果您不喜欢人们对您的问题的投票方式,请编辑它以改进它,而不是破坏此网站。
public class A {
    public static final int A_CONSTANT = new java.util.Random().nextInt();
}