我在考虑Java中的这些修饰符之间是否有任何区别。例如:我有一个int值: public int; 私人int; public static int; private static int; public final int =?; private static final int =?; 因为我在Minecraft中看到资源位置是私有静态最终的。它们之间的内存消耗有什么区别吗?
答案 0 :(得分:2)
声明为static
的所有属性都属于一个类,而不是非静态实例属性,这些属性是为每个实例化的对象分配的。所以是的,static
属性最终消耗了#34;更少的内存"因为他们每个班级只创建一次'实例
但是认为你将一个属性声明为static
只是为了消耗更少的内存是不对的,你创建一个因为你想在所有类的实例中共享相同的值,并且这通常不是设计糟糕的表现。一个例外是当一个属性被声明为static final
时,这意味着它具有一个常量值,并且可以在类级别安全地声明。