1. 程式人生 > >Java中的類變量、實例變量、類方法、實例方法的區別

Java中的類變量、實例變量、類方法、實例方法的區別

方法 入口地址 內存 show 實例方法 static oid 共享 程序

類變量:形如static int a; 顧名思義,類變量可以理解為類的變量,類變量在類加載的時候就已經給它分配了內存空間,不同於實例變量(int a; ),實例變量是在該類創建對象的時候分配內存的。並且,每創建一個對象,就會為該實例變量分配相應的內存空間,而類變量它不屬於任何一個對象,它為所有對象所共享,所有對象的類變量占用相同的一處內存空間。調用類變量過程中,可以用 類名.類變量 也可以 對象名.類變量 來調用。類變量同於C/C++中接觸的static變量,有記憶功能。

類方法:static void show(); 和類變量一樣,類方法也是屬於該類的,在類加載的時候,就為該類方法分配了入口地址,而實例方法,只有在對象創建後才被分配入口地址。同樣的,類方法可以被所有對用調用,可以用 類名.類方法

或者 對象名.類方法 來調用。實例方法只能有對象名來調用。但要註意的是類方法不可以調用實例變量,這是因為,類方法是在類加載的時候被分配的,而這個時候,可能還沒有創建對象來為實例變量來分配內存空間,即實例變量可能還不存在,所以不可以用類方法來調用實例變量。實例方法可以調用所有的實例變量和類變量。

實例變量和實例方法都是在對象消亡是才釋放內存空間,類變量和類方法直到程序運行結束退出才釋放所有的內存空間。

Java中的類變量、實例變量、類方法、實例方法的區別