栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

通常,

static
是指“与类型本身相关联,而不是与类型实例相关联”。

这意味着你可以在没有创建类型实例的情况下引用静态变量,并且任何引用该变量的代码都引用完全相同的数据。将其与实例变量进行比较:在这种情况下,该类的每个实例都有一个独立的变量版本。因此,例如:

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

打印出

10:,y.instanceVariable
并且
x.instanceVariable
是分开的,因为x和y引用不同的对象。

你可以通过引用引用静态成员,尽管这样做不是一个好主意。如果我们这样做:

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通常会建议将第二个列表更改为第三个列表。

不需要像下面这样用内联声明来初始化该值,因为每个实例将具有其自己的NUMBER但始终具有相同的值(是不可变的,并使用文字进行初始化)。这与

final static
在所有实例中只有一个变量相同。

private final int NUMBER = 10;

因此,如果不能更改,则每个实例都没有一个副本。

但是,如果在这样的构造函数中初始化是有意义的:

// No initialization when is declaredprivate final int number;public MyClass(int n) {   // The variable can be assigned in the constructor, but then   // not modified later.   number = n;}

现在,对于的每个实例

MyClass
,我们都可以拥有一个不同但不变的值
number



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441857.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号