更新時間:2020-05-25 16:39:11 來源:動力節點 瀏覽3690次
在Java中,靜態變量和實例變量可以統稱為成員變量。首先,明白什么是靜態變量,什么是實例變量,他們定義的形式。靜態變量也叫做類變量,獨立于方法之外的變量,有static修飾。實例變量同樣獨立也是獨立于方法之外 的變量,但沒有static修飾。
舉個例子:
public?class?StaticTest?{
????private?static?int?staticInt?=?2;//靜態變量
????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();
????}
}
看到上述代碼,大家可以想一下測試結果。
下面公布正確答案:
staticInt?=?3??random?=?3
staticInt?=?4??random?=?3
是否和你想的一樣?上述例子很好的解釋了靜態變量和實例變量的區別。
下面來干貨了,注意收好。
區別總結如下:
實例變量屬于某個對象的屬性,必須創建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。結合上述給出的例子。每創建一個實例對象,就會分配一個random,實例對象之間的random是互不影響的,所以就可以解釋為什么輸出的兩個random值是相同的了。
靜態變量不屬于某個實例對象,而是屬于整個類。只要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就回被分配空間,靜態變量就可以被使用了。結合上述給出的例子,無論創建多少個實例對象,永遠都只分配一個staticInt 變量,并且每創建一個實例對象,staticInt就會加一。
總之,實例變量必須創建對象后,才可以通過這個對象來使用;靜態變量則可以直接使用類名來引用(如果實例對象存在,也可以通過實例對象來引用)。
其實,這也可以解釋,為什么static修飾的方法不用在實例對象創建后,可以調用。而沒有static修飾的方法必須要與對象關聯在一起,必須創建一個對象后,才可以在該對象上進行方法調用。
以上就是動力節點java培訓機構的小編針對“Java靜態變量與類變量與實例變量的區別”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習