Java靜態變量和普通變量是Java語言中常用的兩種變量類型,它們有著明顯的區別。
首先,靜態變量是屬于類的,而普通變量是屬于對象的。
public class MyClass{ static int num1 = 1; //靜態變量 int num2 = 2; //普通變量 }
在上面的代碼中,num1是靜態變量,它只有一個實例,通過類名可以直接訪問;而num2是普通變量,每一個對象都有一個num2,需要通過對象名才能訪問。
接著,靜態變量可以在類加載時就被初始化,而普通變量在對象創建時才被初始化。
public class MyClass{ static int num1 = 1; //靜態變量 int num2 = 2; //普通變量 public static void main(String[] args){ System.out.println(num1); //輸出1 MyClass myClass = new MyClass(); System.out.println(myClass.num2); //輸出2 } }
在上面的代碼中,num1在類加載時就被初始化了,所以可以在main方法中直接訪問;而num2在myClass對象創建時才被初始化,所以需要通過myClass對象訪問。
最后,靜態變量的生命周期和類一樣長,當類被卸載時才會被銷毀;而普通變量的生命周期和對象一樣長,當對象被銷毀時才會被銷毀。
public class MyClass{ static int num1 = 1; //靜態變量 int num2 = 2; //普通變量 public static void main(String[] args){ MyClass myClass1 = new MyClass(); MyClass myClass2 = new MyClass(); System.out.println(myClass1.num2); //輸出2 System.out.println(myClass2.num2); //輸出2 myClass1.num2 = 3; System.out.println(myClass1.num2); //輸出3 System.out.println(myClass2.num2); //輸出2 } }
在上面的代碼中,myClass1和myClass2都有一個num2,但是它們的值是獨立的,更改其中一個不會影響另一個。
綜上所述,Java靜態變量和普通變量有著明顯的區別,程序員需要根據需求選擇合適的變量類型。