天天看點

執行個體變量和類變量差別的總結

  最近在複習一些Java知識..順便給自己做一下總結,哪裡寫得不好,多情大家指教!!

執行個體變量和類變量平時我們好像多少叫做非靜态變量和靜态變量,兩者的差別就是前者沒static修飾,後者有static修飾。執行個體變量和類變量,這樣的叫法,可以很直接得說明它們一個是屬于執行個體的,另一個是屬于類的,那什麼叫屬于執行個體和屬于類呢?

屬于執行個體:在new出類的執行個體的時候進行初始化的變量。

屬于類: 在JVM加載這個類的時候進行初始化。

在同一個虛拟機上,類的加載隻有一次,也就是類變量在虛拟機中隻有配置設定一塊記憶體,而執行個體變量在記憶體中可能有多塊記憶體,要看你new出幾個對象。

這裡說一下java中的前向引用,看一下一段代碼

Java代碼

int a = b + 1;

int b = 2;

對兩個×××初始化的時候會報錯 ,因為在初始化a時,需要更具b的值進行計算,是以是非法前向引用了b,但是看下下一段代碼

static int b = 2;

這段代碼就不會報錯,因為 b 是類變量,類變量的初始化是在類加載的時候進行的,是以b的初始化實在a之前,是以啊可以根據b的值進行計算。

類變量可以通過類進行通路,也可以通過執行個體進行通路,兩種通路都是一樣的,因為執行個體進行通路是間接通過類進行通路。