为什么我们需要Java中的编译时常量?

为什么我们需要Java中的编译时常量?,java,Java,我们为什么需要它们 最后,编译时常量必须是最终的,但不一定是静态的,这对吗?编译时常量的值仅在编译时确定。考虑这个 public static final String s = "abc"; 这里,变量s指的是一个字符串对象,它是一个编译时常量,将在类加载时在内存中创建。对于字符串对象,常量池中将只创建一个字符串abc,因此每当有多个字符串常量的值为abc,它们都将引用常量池内存中相同的abc对象 这样做的好处是只需要创建一个对象,该对象可以被多个引用变量引用。如果它不是最终的,那么它就不可能

我们为什么需要它们


最后,编译时常量必须是最终的,但不一定是静态的,这对吗?

编译时常量的值仅在编译时确定。考虑这个

public static final String s = "abc";
这里,变量
s
指的是一个字符串对象,它是一个编译时常量,将在类加载时在内存中创建。对于字符串对象,常量池中将只创建一个字符串
abc
,因此每当有多个字符串常量的值为
abc
,它们都将引用常量池内存中相同的
abc
对象


这样做的好处是只需要创建一个对象,该对象可以被多个引用变量引用。

如果它不是最终的,那么它就不可能是常数了……:PBE因为如果没有编译时常量,您可能会问为什么Java:DSee中没有编译时常量用于编译和运行时优化。对于代码清晰性警告(“此变量在此不能为null”)。还要了解它的作用等等,请阅读:@AngeloNeuschitzer-看起来你是唯一一个回答理智的人。每个人都兴奋极了:)