我是否将类常量声明为静态是否重要?
public class MyClass {
private final static int statConst = 1;
private final int nonStatConst = 2;
}
statConst
和nonStatConst
永远不会改变,因为它们是最终的,所以即使nonStatConst
在每个实例中都是相同的。是否让它们静止是否重要?
(我意识到只有private final int otherConst;
)
答案 0 :(得分:4)
唯一可以产生影响的方法是,如果要从静态上下文引用成员;换句话说,您没有要使用的类的特定实例。在这种情况下,您需要将变量设置为静态。
答案 1 :(得分:2)
是的,这很重要。
nonStatConst
属于特定instance
。
statConst
在所有实例中共享。
访问时static context
也很重要。
来到final
如果您这样声明,则必须在构造函数完成之前初始化您在类中声明的字段。
答案 2 :(得分:1)
不同之处在于,将在每个实例中分别为nonStatConst
分配空间。对于静态statconst
空间,将仅分配一次。
答案 3 :(得分:0)
如果它是静态的,则只创建一个与该类关联的常量,如果每个对象都是非静态的,则将新创建该常量。如果它是非静态的,则无法在不为类创建对象的情况下访问它
答案 4 :(得分:0)
有两件事需要考虑。
如果不使变量成为静态,则每个创建的MyClass实例都会为每个变量(nonStatConst)分配新的内存空间。相反,无论我们拥有多少MyClass实例,statConst只会分配一次内存空间。
如果nonStatConst不是静态的,则必须实例化MyClass才能访问它。