这个问题已经在这里被问过了。根据答案:
private final int NUMBER = 10;
如果它不能改变,那么每个实例都没有意义。我的疑问是,如果类的实例比如每天创建一次,并持续几秒钟,将int(在某些情况下为对象)保存在内存中是否是一个好主意?假设可能会有许多(20-30)这样的对象。
private final int number
,你声称如果它不能改变,每个实例都有一份副本就没有意义,这是完全错误的。考虑以下代码,典型的不可变类:private final int number;
public MyClass(int number) {
this.number = number;
}
在JDK中,以及全球各地的生产代码类中,有许多此模式的实例。
回答关于性能的问题,我怀疑您无法衡量使用静态常量与实例常量之间的差异。
private
修饰符意味着只有(该类的实例)才能访问和修改属性。final
表示对象构造后该值将不可修改。因此,除非您在构造函数中设置该值(最后允许的时刻),否则该值对于类的所有实例都是相同的 - 也就是说,您可以将其声明为static
。 - Germann Arlington