私有final静态属性vs私有final属性

问题:

在Java中,有什么区别:

private final static int NUMBER = 10;

private final int NUMBER = 10;

两者都是privatefinal,区别是static属性。
什么更好?为什么?

回答:

一般来说,static意味着“与type本身相关联,而不是类型的instance”。
这意味着您可以引用一个静态变量而不创建类型的实例,并且引用该变量的任何代码都是指完全相同的数据。与实例变量进行比较:在这种情况下,每个实例的变量都有一个独立的变量。例如:

Test x = new Test();
Test y = new Test();
x.instanceVariable = 10;
y.instanceVariable = 20;
System.out.println(x.instanceVariable);

打印10:y.instanceVariablex.instanceVariable是分开的,因为xy引用不同的对象。
can通过参考引用静态成员,但这是一个坏主意。如果我们这样做:

Test x = new Test();
Test y = new Test();
x.staticVariable = 10;
y.staticVariable = 20;
System.out.println(x.staticVariable);

那么这将打印出20 – 只有一个变量,而不是每个实例。把这个写成:

Test x = new Test();
Test y = new Test();
Test.staticVariable = 10;
Test.staticVariable = 20;
System.out.println(Test.staticVariable);

这使得行为更加明显。现代IDE通常会建议将第二个列表更改为第三个。
没有理由有这样的声明

private final int NUMBER = 10;

如果不能改变,每个实例没有一个副本。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: private final static attribute vs private final attribute

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 60 = 64