目錄
1.原理——內存機制
? ? ? 1.1 修飾對象
? ? ? 1.2 lifecycle生命周期
2. 靜態屬性(類屬性)和實例屬性(對象屬性)
2.1 定義方式
2.2 調用方法
3. 靜態方法和屬性
3.1 在同一個類中
3.2 在不同類中
4.總結(關鍵)
1.原理——內存機制
static修飾符??
? ? ? 1.1 修飾對象
? ? ? ? ?修飾屬性,方法,代碼塊,內部類
? ? ? 1.2 lifecycle生命周期
? ? ? ? ?修飾后,隨著類的加載而加載,項目中只加載一次
? ? ? ? ?靜態屬性,靜態方法生成在方法區的靜態區,屬于類共享
? ? ? ? ?【注意區分:非靜態必須在heap中創建實例對象,且每個對象占不同空間,屬性方法互不影響】
? ? ? ? ?
2. 靜態屬性(類屬性)和實例屬性(對象屬性)
2.1 定義方式
name,age未用static修飾 屬于對象屬性,在堆空間分別占不同空間 ,堆空間有對象即存在
nation 屬于類屬性 ,直接存放在靜態區,單例,類加載時即存在
2.2 調用方法
靜態屬性?——類加載即存在????????????????
???????????????????????類,實例對象 皆可直接找到
? ? ? ? ? ? ? ? ? ? ? ?屬于共享數據,大家都是調用的那個空間的數據
實例屬性——對象加載即存在(比靜態屬性加載更晚)
? ? ? ? ? ? ? ? ? ? ? 指定某對象找它自己的對應屬性
3. 靜態方法和屬性
3.1 在同一個類中
如下圖,在本類定義的對象方法my_show, 其中可調用自己類中 和 其他實例對象的全部屬性(包括靜態)
? ? ? ? ? ? ? ? 而靜態方法中只能調用靜態屬性? ? ? ? ? ? ? ? ? ? ? ??
3.2 在不同類中
兩種屬性和方法 皆可隨時調用?
? ? ? ? 實例屬性和方法——》先實例化對象(堆中生成空間),再直接調用
? ? ? ? 靜態屬性和方法——》無論是否實例化對象,即可調用
4.總結(關鍵)
靜態屬性或方法,只加載一次,且在類加載 ,保存單例到方法區的靜態域,類和對象在其他類都可通過不同方式調用,且數據和操作全部共享。