首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >私人静态决赛与私人决赛

私人静态决赛与私人决赛
EN

Stack Overflow用户
提问于 2014-03-24 11:11:37
回答 2查看 7.8K关注 0票数 5

这个问题已经被问到here了。根据答案:

代码语言:javascript
复制
private final int NUMBER = 10;

如果它不能更改,则没有必要在每个实例中拥有一个副本。

我的疑问是,如果创建了类的实例,比如每天创建一次,并且持续几秒钟,那会怎样呢?将int(在某些情况下是对象)保存在内存中是个好主意吗?

假设有许多这样的对象(20-30)。

EN

回答 2

Stack Overflow用户

发布于 2014-03-24 11:21:36

如何存储这些信息在很大程度上取决于它的用途。

您可以采取以下几种方法:

私有静态最终

如果该值在应用程序的生存期内永远不会被修改,这是一个很好的选择。这意味着,当您创建多个实例时,实际上只存储这个特定变量一次。

私有最终

这意味着该值可能对对象的不同实例采用不同的值,但任何特定实例都不会在对象的整个生命周期内对其值进行修改。

如果你看到的东西可能会在一段时间内呈现不同的值,那么你可能会对此感兴趣。

公共静态int GetNumber(){.}

您可能考虑的另一种方法是让一个静态方法返回您想要的值。这使得处理值的更改变得容易,但您还需要考虑这种更改在任何给定实例的整个生命周期中的影响。

希望能帮上忙..。

票数 4
EN

Stack Overflow用户

发布于 2014-03-24 12:28:59

关于private final int number,你声称

如果它不能更改,则没有必要在每个实例中拥有一个副本。

绝对是错的。考虑以下代码,典型的不可变类:

代码语言:javascript
复制
private final int number;

public MyClass(int number) {
    this.number = number;
}

在JDK和世界各地的生产代码类中,有许多这种模式的实例。

要回答有关性能的问题,我怀疑您是否能够度量使用静态和实例常量之间的区别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22607743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档