static關鍵字的作用
static可以修飾變量、方法、代碼塊和內部類
static屬性屬於這個類所有,即由該類創建的所有對象共享同一個static屬性。可以對象創建后通過對象名.屬性名和類名.屬性名兩種方式來訪問。也可以在沒有創建任何對象之前通過類名.屬性名的方式來訪問。
static變量和非static變量的區別(都是成員變量,不是局部變量)
1.在內存中份數不同
不管有多少個對象,static變量只有1份。對於每個對象,實例變量都會有單獨的一份
static變量是屬於整個類的,也稱為類變量。而非靜態變量是屬於對象的,也稱為實例變量
2.在內存中存放的位置不同
2.在內存中存放的位置不同
3.訪問的方式不同
實例變量: 對象名.變量名 stu1.name="小明明";
靜態變量:對象名.變量名 stu1.schoolName="西二旗小學"; 不推薦如此使用
類名.變量名 Student.schoolName="東三旗小學"; 推薦使用
4.在內存中分配空間的時間不同
Student.schoolName="東三旗小學";或者Student stu1 = new Student("小明","男",20,98);
static方法也可以通過對象名.方法名和類名.方法名兩種方式來訪問
static代碼塊。當類被第一次使用時(可能是調用static屬性和方法,或者創建其對象)執行靜態代碼塊,且只被執行一次,主要作用是實現static屬性的初始化。
static內部類:屬於整個外部類,而不是屬於外部類的每個對象。不能訪問外部類的非靜態成員(變量或者方法),.可以訪問外部類的靜態成員