私人决赛与私人决赛

时间:2014-03-24 11:11:37

标签: java memory

此问题已被问及here。根据答案:

private final int NUMBER = 10;
  

如果无法更改,则每个实例都没有一个副本。

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

假设可能有很多(20-30)个这样的对象。

2 个答案:

答案 0 :(得分:3)

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

您可以采取一些方法:

私人静态决赛

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

私人决赛

这适用于值对于对象的不同实例可能采用不同值的那些时间,但任何特定实例都不会在整个对象的生命周期内修改它的值。

如果您正在查看可能在一段时间内采用不同值的内容,那么您可能会感兴趣。

public static int GetNumber(){...}

您可能考虑的另一种方法是让静态方法返回您所追求的值。这样可以轻松处理值的变化,但您还需要在任何给定实例的整个生命周期中考虑这种变化的影响。

希望有帮助...

答案 1 :(得分:2)

关于private final int number,您的主张是

  

如果它无法改变,那么每个实例没有一个副本

绝对错误。请考虑这段代码,这是典型的不可变类:

private final int number;

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

在JDK和全球生产代码类中有许多这种模式的实例。


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