在程序執行時的區別:實例變量屬於一個對象,必須先創建實例對象,它的實例變量纔會被分配空間,才能使用這個實例變量。靜態變量則屬於類,所以也稱爲類變量,只要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就會被分配空間,靜態變量就可以被使用了。總之,實例變量必須創建對象後纔可以透過這個對象來使用,靜態變量則可以直接使用類名來引用。
例如,對於下面的程序:
public class VarTest
{
public static int staticVar = 0
public int instanceVar = 0
public VarTest ()
{
staticVar++
instanceVar++
tln(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar)
}
}
上面程序中的staticVar變量隨VarTest類初始化而分配內存、執行初始化的,以後無論創建多少個實例對象,不會再分配staticVar變量,因此用永遠只有一個staticVar變量。
但instanceVar變量則是隨着VarTest對象初始化而分配內存、執行初始化的,因此每創建一個實例對象,就會分配一個instanceVar,即可以分配多個instanceVar。因此上面程序中每創建一個VarTest對象,staticVar的值就會自加一,但每個VarTest對象的instanceVar最多隻自加1。