以下內容整理自互聯網,僅用于個人學習
static靜態修飾符
程序中的變量和代碼都是由系統來自動分配內存的,static修飾符表示靜態修飾,在類加載的時候JVM會把static修飾的變量或者方法放到方法區,被本類以及本類的所有實例共用。在編譯后會一直存在,直到程序退出。
使用static修飾的變量和方法可以直接通過類名來訪問。
靜態代碼塊
static代碼塊在類中是獨立于成員變量和成員函數代碼的,它不在任何一個方法體內,JVM在類加載的時候會執行static代碼塊。static代碼塊經常用于初始化靜態變量,這些代碼塊只會被執行一次。
靜態成員變量
static成員變量在內存中只有一個內存地址,它能被本類以及本類的所有實例共用。引用方式:類 . 靜態變量、對象 . 靜態變量。
靜態成員方法
static方法是類的方法,不需要創建對象就可以被調用。
static方法中不能使用this和super關鍵字,不能調用非static方法,只能訪問所屬類的靜態成員變量和成員方法。
靜態內部類
靜態類只存在靜態內部類一種,也就是只有內部類能使用靜態修飾符。static內部類可以不依賴與外部類實例對象而被實例化,而普通的內部類需要在外部類實例化后才能實例化。
static內部類只能訪問外部類中的static成員和方法。
static內部類不能與外部類有相同的名字。
總結
內部靜態類不需要有指向外部類的引用。但非靜態內部類需要持有對外部類的引用。非靜態內部類能夠訪問外部類的靜態和非靜態成員。靜態類不能訪問外部類的非靜態成員。他只能訪問外部類的靜態成員。一個非靜態內部類不能脫離外部類實體被創建,一個非靜態內部類可以訪問外部類的數據和方法,因為他就在外部類里面。