static:靜態的 ? 特點:1:其修飾的成員變量隨著類的加載就在方法區中的靜態區開辟內存, 優先于非static修飾的成員變量開辟內存
2:修飾的成員變量是該類的所有對象共存,節約內存
3:可以通過類名和對象訪問靜態成員變量
靜態成員變量和非靜態成員變量得區別
1:存儲數據
靜態成員變量存儲的是所有對象共享的數據
非靜態成員變量存儲的是每一個實例化對象特有的數據
2:存儲位置
靜態成員變量是隨著類的加載就在方法區中的靜態區開辟內存了
非靜態成員變量是隨著每個實例化對象的創建在堆中開辟內存
3:調用方式
靜態成員變量既可以通過對象訪問也可以通過類名直接訪問
非靜態成員變量只能通過對象訪問
4:生命周期
靜態成員變量是隨著類的加載就在方法區中的靜態區中創建,程序結束才被釋放
非靜態成員變量是隨著對象的創建在堆中出現,隨著對象被垃圾回收而消失
實例成員變量---->>非靜態成員變量
類變量----->>靜態成員變量
實例成員函數---->>非靜態成員函數(既可以訪問非靜態成員變量,也可以靜態成員變量)
類函數----->>靜態成員函數(函數內只能使用靜態成員變量,不能訪問非靜態成員變量)
什么時候用static修飾
當成員變量需要被雷的所有對象共享時,當成員函數沒有用到其所屬的類的任何非靜態成員時用static