JAVA面向對象學習之static
17.1 static關鍵字及其內存圖
1、static關鍵字表示靜態,使用static關鍵字後,賦值後靜態保存,比如字段"國籍",在p1賦值了"中國",在p2中,"國籍"字段默認就是p1中賦值的。
案例演示如圖1和2所示:
![JAVA面向對象學習之static關鍵字、成員變量與靜態變量的差異分析](http://p2.ttnews.xyz/loading.gif)
圖1
![JAVA面向對象學習之static關鍵字、成員變量與靜態變量的差異分析](http://p2.ttnews.xyz/loading.gif)
圖2
2 static關鍵字的特點
2.1、隨著類的加載而加載;
2.2、優先於對象存在;
2.3、被類的所有對象共享(靜態):共性用靜態,特性用非靜態;
2.4、可以通過類名調用:它本身也可通過對象名調用,推薦使用類名調用。靜態修飾的內容一般我們稱其為:與類相關的類成員。
3、static的注意事項:
3.1在靜態方法中是沒有this關鍵字的
a.靜態是隨著類的加載而加載,this是隨著對象的創建而存在;
b.靜態比對象先存在。
3.2靜態方法只能訪問靜態的成員變量和靜態的成員方法:
a.靜態方法:
成員變量:只能訪問靜態變量;
成員方法:只能訪問靜態成員方法。
b.非靜態方法:
成員變量:可以是靜態的,也可以是非靜態的;
成員方法:可是靜態的成員方法,也可以是非靜態的成員方法。
也就是說,靜態只能訪問靜態。
程序代碼演示如圖3所示:
圖3
4、成員變量和靜態變量的區別:靜態變量也叫類變量,成員變量也叫對象變量。
4.1所屬不同:
靜態變量屬於類,所以也稱為類變量;
成員變量屬於對象,所以也稱為實例變量(對象變量)。
4.2 內存中的位置不同:
靜態變量存儲於方法區的靜態區;
成員變量存儲於堆內存。
4.3 內存中出現的時間也不同:
靜態變量隨著類的加載而加載,隨著類的消失而消失;
成員變量隨著對象的創建而存在,隨著對象的消失而消失。
4.4 調用不同:
靜態變量可以通過類名調用,也可以通過對象調用;
成員變量只能通過對象名調用。
感謝支持,我是小區日記本,每天根據小編的學習,持續分享學習的筆記與心得。
案例代碼截圖僅包含部分,小編已整理了全部代碼並分享,可免費領取,私信回覆2個字:代碼
閱讀更多 小區日記本 的文章