static靜態關鍵字修飾:屬性,方法,內部類,代碼塊
static修飾的資源屬于類級別,由全體對象共享資源。
1)屬性
使用static修飾的屬性,屬于類的全體類的實例共享的變量,靜態屬性在類的加載初期初始化,使用類名.屬性訪問 如:System.out
2)實例變量
屬于對象的屬性,使用對象.屬性訪問 如:Person.name
舉例詳解:
public class StaticFieldDemo{
public static void main(String [] args){
XMM mm1=new XMM();
XMM mm2=new XMM();
XMM mm3=new XMM();
System.out.PRintln(mm1.id+""+mm2.id+""+mm3.id+""+XMM.i);
}}
class XMM{
int id; //實例變量
static i=0;//靜態類級別變量
public XMM(){ //構造函數
id=i++;
}}
結果:0123
注:int id實例變量,相當于“”每個人的水杯“
static int i=0 靜態類級別變量,相當于“公用的水桶”
執行步驟:1.加載類,static變量在類家在期間初始化
2.在內存中分配對象空間,屬性默認自動初始化 ,為“0”值
3.進行屬性的賦值
4.遞歸調用父類構造器,默認調用無參構造器
5.調用本類構造器
3)靜態方法
使用static聲明的方法,屬于類的方法,在類加載后就可以自己調用,不需要創建類的實例對象
靜態方法不能訪問屬于對象的資源(對象屬性,對象方法)
4)靜態代碼塊
靜態代碼塊是在類加載期間運行的代碼塊,由于類只加載一次,所以靜態代碼塊只執行一次,一般用在類加載以后初始化一些靜態資源 如:加載配置文件
static{ }
舉例:class XMMM { // 代碼塊 { System.out.println("代碼塊,創建對象執行,創建對象了"); } // 靜態代碼塊 static { System.out.println("靜態代碼塊,類加載期間執行初始化,類加載了"); } public XMMM() { // 構造函數 System.out.println("構造好了"); }}
結果:靜態代碼塊,類加載期間執行初始化,類加載了 代碼塊,創建對象執行,創建對象了 構造好了
新聞熱點
疑難解答