【发布时间】:2016-05-07 20:02:51
【问题描述】:
Deitel 的 How To Program Java 书说:
如果 final 字段在其声明中被初始化为一个值,它也应该被声明为静态的。
为什么会这样?
public class A
{
private final int x = 5;
private static final int y = 5;
}
我认为 x 和 y 是一样的。static 限定符在这里有什么意义?static 限定词对软件工程观察有什么好处?
【问题讨论】:
-
static仅表示您不需要类实例即可引用它。我不确定我是否完全同意该声明,但它脱离了上下文,因为您可以有一个final字段,该字段是从传递给类的构造函数的值初始化的,但也许这是一个不同的用例 -
没错,只有这个区别吗?
-
“如果 final 字段在其声明中初始化为一个值,它也应该被声明为静态的。” 谁写过这应该区分可变类型和不可变类型。跨度>
-
它们不一样。对于 n 个
As,有 n 个xs,只有 1 个y。 -
我建议唯一的其他(显着)区别是如何为它们分配内存