0

我是否将类常量声明为静态是否重要?

public class MyClass {
    private final static int statConst = 1;
    private final int nonStatConst = 2;
}

statConst并且nonStatConst永远不会改变,因为它们是最终的,所以nonStatConst在每种情况下都是相同的。我是否将它们设为静态是否重要?

(我意识到 just 会有区别private final int otherConst;

4

5 回答 5

4

它产生影响的唯一方法是如果您想从静态上下文中引用成员;换句话说,您没有要使用的类的特定实例。在这种情况下,您需要变量是静态的。

于 2013-09-09T08:11:54.660 回答
2

是的,这很重要。

nonStatConst 是属于特定的instance

statConst 在所有实例之间共享。

访问时也static context很重要。

来到final如果你这样声明,你在类中声明的字段必须在构造函数完成之前初始化。

于 2013-09-09T08:09:34.977 回答
1

不同之处在于,将分别为nonStatConst每个实例分配空间。因为静态statconst空间只会被分配一次。

于 2013-09-09T08:13:34.540 回答
0

If it is static , you will have only one constant created, that is associated with the class, If it is non static for each object the constant will be newly created. If it is non static you cannot access it with out creating Objects for the class

于 2013-09-09T08:10:39.283 回答
0

有两件事需要考虑。

  1. 如果您不将变量设为静态,则创建的每个 MyClass 实例都会为每个变量(nonStatConst)分配新的内存空间。相反,无论我们有多少 MyClass 实例,statConst 只会分配一次内存空间。

  2. 如果 nonStatConst 不是静态的,则必须实例化 MyClass 才能访问它。

于 2013-09-09T08:22:55.900 回答