gpt4 book ai didi

java - Java 常量的编译时值绑定(bind)

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:56 25 4
gpt4 key购买 nike

根据最后的注释here :

"如果原始类型或字符串被定义为常量并且值在编译时已知,编译器会用它的值替换代码中各处的常量名称。这称为编译时常量. 如果外界常量的值发生变化(例如,如果立法规定 pi 实际上应该是 3.975),您将需要重新编译任何使用该常量的类以获取当前值。

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

所以 - 根据上述规范,如果我将 PI 的值从 3.14 更改为,比如说 class A 中的 3.0,我必须重新编译 class B 以在 class B 中获得该更改的效果。

这里的问题是——上述规范中“常量”的定义到底是什么?它是 final 关键字吗?在这种情况下,任何 static 字段成员“有资格”作为常量吗?非静态字段成员在这里将脱离上下文——它们的值是在运行时分配的(?)

TIA。

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

编辑:

这里的问题是:是什么让编译器决定在编译时绑定(bind)值。 static 关键字是否单独完成这项工作。或者还有其他东西吗?

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

引用下面不断获得投票的快速回答:

同一页上的行:

static修饰符,结合final修饰符,也用来定义常量。final修饰符表示该字段的值不能改变。”

1.) “...用于定义常量。...”:还有什么定义了常量。

2.) “...结合 final 修饰符”:final 是在编译时绑定(bind)值所必需的——我对此表示怀疑是。

最佳答案

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

Constants

The static modifier, in combination with the final modifier, is also used to define constants. The final modifier indicates that the value of this field cannot change.

关于java - Java 常量的编译时值绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25371014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com