根据最后的注释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)所必需的-我怀疑是这样。

最佳答案

您甚至都没有阅读提到的链接?

10-02 02:40
查看更多