更新時間:2020-05-25 16:39:11 來源:動力節(jié)點 瀏覽3550次
在Java中,靜態(tài)變量和實例變量可以統(tǒng)稱為成員變量。首先,明白什么是靜態(tài)變量,什么是實例變量,他們定義的形式。靜態(tài)變量也叫做類變量,獨立于方法之外的變量,有static修飾。實例變量同樣獨立也是獨立于方法之外 的變量,但沒有static修飾。
舉個例子:
public?class?StaticTest?{
????private?static?int?staticInt?=?2;//靜態(tài)變量
????private?int?random?=?2;//實例變量
?
????public?StaticTest()?{
????????staticInt++;
????????random++;
????????System.out.println("staticInt?=?"+staticInt+"??random?=?"+random);
????}
?
????public?static?void?main(String[]?args)?{
????????StaticTest?test?=?new?StaticTest();
????????StaticTest?test2?=?new?StaticTest();
????}
}
看到上述代碼,大家可以想一下測試結(jié)果。
下面公布正確答案:
staticInt?=?3??random?=?3
staticInt?=?4??random?=?3
是否和你想的一樣?上述例子很好的解釋了靜態(tài)變量和實例變量的區(qū)別。
下面來干貨了,注意收好。
區(qū)別總結(jié)如下:
實例變量屬于某個對象的屬性,必須創(chuàng)建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。結(jié)合上述給出的例子。每創(chuàng)建一個實例對象,就會分配一個random,實例對象之間的random是互不影響的,所以就可以解釋為什么輸出的兩個random值是相同的了。
靜態(tài)變量不屬于某個實例對象,而是屬于整個類。只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實例對象,靜態(tài)變量就回被分配空間,靜態(tài)變量就可以被使用了。結(jié)合上述給出的例子,無論創(chuàng)建多少個實例對象,永遠都只分配一個staticInt 變量,并且每創(chuàng)建一個實例對象,staticInt就會加一。
總之,實例變量必須創(chuàng)建對象后,才可以通過這個對象來使用;靜態(tài)變量則可以直接使用類名來引用(如果實例對象存在,也可以通過實例對象來引用)。
其實,這也可以解釋,為什么static修飾的方法不用在實例對象創(chuàng)建后,可以調(diào)用。而沒有static修飾的方法必須要與對象關(guān)聯(lián)在一起,必須創(chuàng)建一個對象后,才可以在該對象上進行方法調(diào)用。
以上就是動力節(jié)點java培訓機構(gòu)的小編針對“Java靜態(tài)變量與類變量與實例變量的區(qū)別”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。