【发布时间】:2010-11-27 19:22:58
【问题描述】:
在Java中,有什么区别:
private final static int NUMBER = 10;
和
private final int NUMBER = 10;
都是private和final,区别在于static属性。
什么更好?为什么?
【问题讨论】:
-
private final static -> 只创建一次这个变量。 private final -> 为每个对象创建这个变量。第一个节省内存,去吧。
-
final static表示这个变量是一个常量并且只与类本身相关联,即“每个类一个常量变量”,而final表示“每个实例一个常量变量”。结果,您不能将final static变量放在类的构造函数中,因为构造函数涉及new an instance。 (你可以自己试试,会报错) -
“不能在类的构造函数中放入最终的静态变量”我的意思是不能在构造函数中初始化
final static变量,唯一的方法是使用静态初始化器:) -
@user1923551 对于大型应用程序、内存稀缺应用程序或使用单例时仅在有限时间内需要的东西,效果是相反的。在每个类中都有静态的东西将为不需要的东西保留一个(巨大的)内存块。声明静态最终对象或集合也可能是内存泄漏。
标签: java static attributes private final