Java常量的编译时值绑定

use*_*721 5 java static constants

据到最后的音符在这里:

" 如果将原始类型或字符串定义为常量并且该值在编译时已知,则编译器将代码中的常量名称替换为其值.这称为编译时常量.如果值为不断在外界的变化(例如,如果立法规定PI实际上应该是3.975),您将需要重新编译使用此常量来获取当前值的类. "

假设我在中定义了一个公共常量PI(public static final double PI=3.14)class A,并PI从内部使用了这个常量class B.

所以 - 通过上面的规范,如果我将PI3.14 的值更改为3.0 in class A,我必须重新编译class B以获得该更改的效果class B.

这里的Q是 - 上述规范中"常数"的定义究竟是什么?它是final关键字吗?static在这种情况下,任何字段成员"限定"为常量吗?这里的非静态字段成员将脱离上下文 - 它们的值在运行时分配(?)

TIA.

// ===========================

编辑:

这里的Q是:什么使编译器决定在编译时绑定值.请问static关键字全部由自己做这个工作.或者还有其他什么东西.

// =======================

参考下面的快速回答,不断投票:

同一页面上的行:

" 静态修饰符与最终修饰符结合使用,也用于定义常量.最终修饰符表示此字段的值不能更改."

1.)"...... 也用于定义常量......":还有什么定义常量.

2.)"...... 与最终修饰符结合使用 ":final在编译时使值受限是必要的 - 我怀疑它是什么.

Smu*_*tje 3

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

常数

修饰符static与修饰符结合final也用于定义常量。修饰符final表示该字段的值不能更改。