根据最后的注释here:
“如果将原始类型或字符串定义为常量,并且在编译时知道该值,则编译器会用其值替换代码中各处的常量名称。这称为编译时常量。如果外界变化的常量(例如,如果pi实际应为3.975),则需要重新编译使用该常量的任何类以获取当前值。”
假设我在PI
中定义了一个公共(public)常量public static final double PI=3.14
(class A
),并且
从PI
中使用了此常量class B
。
所以-根据上述规范,如果我将PI
的值从3.14更改为class A
中的3.0,则我必须重新编译class B
以获得class B
中该更改的效果。
问:这里的规范中“常量”的定义到底是什么?
是final
关键字吗?在这种情况下,任何static
字段成员都“合格”为常量吗?
非静态字段成员将不在上下文中-它们的值在运行时分配(?)
TIA。
//==========================
编辑:
这里的问题是:是什么使编译器决定在编译时绑定(bind)值。 static
关键字是自己完成这项工作的吗?还是还有其他东西。
//=======================
引用下面的快速答案,该答案不断得到投票:
同一页上的行:
“static修饰符与final修饰符一起也用于定义常量。final修饰符指示此字段的值不能更改。”
1.)“...是还是,用于定义常量。...”:还有其他定义常量的内容。
2.)“... 与最终修饰符结合使用”:final
是使值在编译时绑定(bind)所必需的-我怀疑是这样。
最佳答案
您甚至都没有阅读提到的链接?