靜態變數和例項變數

2022-07-30 01:30:14 字數 767 閱讀 8578

在語法定義上的區別:靜態變數前要加static關鍵字,而例項變數前則不加。

在程式執行時的區別:例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,不用建立任何例項物件,靜態變數就會被分配空間,靜態變數就可以被使用了。總之,例項變數必須建立物件後才可以通過這個物件來使用,靜態變數則可以直接使用類名來引用。

例如,對於下面的程式,無論建立多少個例項物件,永遠都只分配了乙個staticvar變數,並且每建立乙個例項物件,這個staticvar就會加1;但是,每建立乙個例項物件,就會分配乙個instancevar,即可能分配多個instancevar,並且每個instancevar的值都只自加了1次。

public class varianttest

}備註:這個解答除了說清楚兩者的區別外,最後還用乙個具體的應用例子來說明兩者的差異,體現了自己有很好的解說問題和設計案例的能力,思維敏捷,超過一般程式設計師,有寫作能力!

是否可以從乙個static方法內部發出對非static方法的呼叫?

不可以。因為非static方法是要與物件關聯在一起的,必須建立乙個物件後,才可以在該物件上進行方法呼叫,而static方法呼叫時不需要建立物件,可以直接呼叫。也就是說,當乙個static方法被呼叫時,可能還沒有建立任何例項物件,如果從乙個static方法中發出對非static方法的呼叫,那個非static方法是關聯到哪個物件上的呢?這個邏輯無法成立,所以,乙個static方法內部發出對非static方法的呼叫。

靜態變數和非靜態變數

class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...

靜態變數和例項變數的區別?

1 在語法定義上的區別 靜態變數前要加 static 關鍵字,而例項變數前則不加。2 在程式執行時的區別 例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,不用建立...

靜態變數和例項變數的區別

在語法定義上 靜態變數前要加static關鍵字,而例項變數前不加。在程式執行上 例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配記憶體空間,才能使用這個例項變數。靜態變數屬於類,也稱為類變數,只要程式載入了類的位元組碼檔案,不用建立任何例項物件,靜態變數就會被分配記憶體空間,...