Java 中靜態變量和實例變量區別
靜態變量屬於類,該類不生產對象,通過類名就可以調用靜態變量。
實例變量屬於該類的對象,必須產生該類對象,才能調用實例變量。
在程序運行時的區別:
實例變量屬於某個對象的屬性,必須創建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。
靜態變量不屬於某個實例對象,而是屬於類,所以也稱為類變量,只要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就會被分配空間,靜態變量就可以被使用了。
總之,實例變量必須創建對象后才可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。
例如,對於下面的程序,無論創建多少個實例對象,
永遠都只分配了一個 staticInt 變量,並且每創建一個實例對象,這個 staticInt 就會加 1;但是,每創建一個實例對象,就會分配一個 random,
即可能分配多個 random ,並且每個 random 的值都只自加了1次。
請看如下代碼:
private static int staticInt=2;//聲明靜態變量,並賦值
private int random=2;//聲明實例變量,並賦值
// 靜態變量屬於類,該類不生產對象,通過類名就可以調用靜態變量。
// 實例變量屬於該類的對象,必須產生該類對象,才能調用實例變量。
public static void main(String[] arges){//定義main方法
System.out.println(staticInt);
StaticTest test=new StaticTest();//創建對象
System.out.println(test.random);//通過test調用變量
}