static :
1,修飾符,用於修飾成員變量和成員方法
2,被static修飾後的成員變量被對象共享。
3,靜態優先於對象存在。
4,靜態成員可以被對象訪問,也可以被類名訪問。
5,靜態隨着類的加載而加載。
對象特有的數據存儲到對象的堆內存中。
對象共享的數據存儲在方法區的靜態區中。
什麼時間定義靜態?
1,靜態變量:當變量被對象共享時。
2,靜態函數:方法中沒有訪問到非靜態變量時(特有數據)
靜態使用的注意事項:
1,靜態方法只能訪問靜態成員(所以靜態雖然多了一種用類名調用的方式,但是也出現了訪問的侷限性)。
2,非靜態方法即可以訪問靜態又可以訪問非靜態。(靜態先存在於方法區)非靜態都屬於對象。
3,靜態方法中不可以出現this,super關鍵字。 因爲this代表對象,static方法存在是還沒有對象。
4,主函數是靜態的。
靜態變量和成員變量的區別:
1,在內存空間存儲的位置:
a) 靜態變量:方法區的靜態區中。
b) 成員變量:堆內存中。
2,什麼週期:
a) 靜態變量:隨着類的加載而加載,隨着類的消失而消失。
b) 成員變量:隨着對象的創建而出現,隨着所屬對象變成垃圾被收回而消失
3,調用方式:
a) 成員變量:只能被對象調用。
b) 靜態變量:既可以被對象調用,也可以被類名調用。
4,數據體現:
a) 成員變量的值稱爲對象中的特有數據。
b) 靜態變量的值稱爲對象中的共享數據。
只有類中的成員變量被用到,類纔會被加載。
main函數:
public static voidmain(String[] args)
public : 主函數是一個功能,被jvm調用所以權限要足夠大。
static : jvm調用主函數,是不需要對象的。
void : 主函數沒有返回值。
main : 主函數固定的名稱的,jvm認識。
(String[] args): 主函數的參數列表,就一個參數,字符串數組類型。
arguments-->args:
靜態代碼塊:
static {}
特點:
隨着類的加載而執行,只執行一次。
作用:
給類進行初始化。
類被加載(類中的成員被調用)à靜態代碼塊à構造代碼塊à構造函數
類名爲public時 ,.java文件名必須與類名同名。