我寫了一個類,但是程序中沒有聲明這個類的對象。但是這個類中有個靜態的變量,我直接通過類名來操作靜態變量。。。這種情況下,這個類的構造方法是不是就不會執行?還有,是不是不管是不是聲明類的對象,對這個靜態變量都沒有影響?
5 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
對的, 你的理解沒有錯. 靜態變量屬于類本身, 不屬于對象, 因此直接使用類名來操作靜態變量, 是不會導致這個類的構造方法執行的.
還有,是不是不管是不是聲明類的對象,對這個靜態變量都沒有影響?
對的. 還是那句話, 靜態變量是類的屬性, 和這個類的對象沒有關系. 所有的對象都共用一個此類的靜態變量, 因此不論是否有實例化對象, 都不影響這個靜態變量的使用.

哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
Java程序對類的使用方式:
主動使用
被動使用
所有的Java虛擬機實現必須在每個類或接口被Java程序首次主動使用時才初始化他們。
主動使用:
創建類的實例
訪問某個類或接口的靜態變量,或者對該靜態變量賦值
調用類的靜態方法
反射
初始化一個類的子類
Java虛擬機啟動是被標明為啟動類的類
除了以上六中情況,其他對類的使用都是被動使用,都不會導致類的初始化。當訪問一個類的編譯時靜態常量的時候,并不會導致類的初始化,即編譯時就已經確定值的常量
添加回答
舉報
0/150
提交
取消