Java編程中,靜態字段和實例是兩個非常重要的概念,它們具有不同的屬性和用法。
靜態字段指的是屬于類的屬性,而不是屬于某個實例的屬性,我們可以通過類名來訪問它們。它們被存儲在JVM堆區的方法區里面,且只會被初始化一次,即類加載時就初始化。它們可以被所有同一類的實例共享,因此任意一個實例對它的修改,都會影響到其他所有實例。
public class StaticFieldDemo { static int count = 0; public StaticFieldDemo() { count++; } public static void main(String[] args) { StaticFieldDemo demo1 = new StaticFieldDemo(); System.out.println(demo1.count); // output: 1 StaticFieldDemo demo2 = new StaticFieldDemo(); System.out.println(demo2.count); // output: 2 System.out.println(demo1.count); // output: 2 } }
實例則是類的具體化,每個實例都有自己的屬性值,與其他實例互不干擾。在內存中,它們會被實例化為在堆內存中的不同地址。
public class InstanceDemo { int number; public InstanceDemo(int number) { this.number = number; } public static void main(String[] args) { InstanceDemo demo1 = new InstanceDemo(1); System.out.println(demo1.number); // output: 1 InstanceDemo demo2 = new InstanceDemo(2); System.out.println(demo2.number); // output: 2 System.out.println(demo1.number); // output: 1 } }
總結來說,靜態字段適用于同一類的所有實例共享的屬性,而實例則適用于具體化的對象屬性。