Java是一種面向對象的編程語言,其中涉及兩種類型的變量:靜態變量和實例變量。
靜態變量,也稱為類變量,是在類加載時創建并分配內存的。它們是與類相關而不是與對象相關的。靜態變量在整個運行時期保持不變,并且只有一個副本存儲在內存中,因此可以在各類實例之間共享。
public class Example { static int a = 0; public Example() { a++; System.out.println(a); } } public static void main(String[] args) { Example e1 = new Example(); Example e2 = new Example(); Example e3 = new Example(); } // 輸出結果: // 1 // 2 // 3
在上述代碼中,我們定義了一個靜態變量a,并在類的構造函數中自增。每次創建新實例時,a的值都會增加并輸出,因為靜態變量的值在各實例之間共享,所以每個實例都會產生相同的輸出,即a的當前值。
與靜態變量相反,實例變量是與對象相關的。每個實例都有自己的副本,并在創建對象時分配內存。實例變量的值可以在各個實例之間不同,并且它們不會在運行時共享。
public class Example { int a = 0; public Example() { a++; System.out.println(a); } } public static void main(String[] args) { Example e1 = new Example(); Example e2 = new Example(); Example e3 = new Example(); } // 輸出結果: // 1 // 1 // 1
在上述代碼中,我們定義了一個實例變量a。每次創建新實例時,a的值都會增加并輸出,但是輸出結果與每個實例關聯,因為每個實例都有自己的副本,值不會在各實例間共享。
總結來說,靜態變量是與類關聯的變量,是在類加載時創建,并在整個運行時期保持不變的。實例變量是與對象相關的變量,是在創建對象時分配內存的,值與每個對象相關,并且不會在各個實例之間共享。