static是Java中的一個關鍵字,表示靜態的意思。它可以用來修飾類、方法和變量。
靜態成員變量:被static修飾的成員變量,也稱為類變量。它屬于類本身而非實例,所有該類的實例共享同一個靜態變量。可以通過類名來訪問,也可以通過實例對象來訪問。靜態變量在類加載時被初始化,并且只會被初始化一次。靜態變量在內存中的存儲位置是在靜態數據區。
靜態方法:被static修飾的方法,也稱為類方法。它屬于類本身而非實例,可以通過類名來調用。靜態方法可以直接訪問類的靜態變量,但不能直接訪問類的非靜態變量。靜態方法可以在沒有創建類的實例對象的情況下被調用。靜態方法不能被子類重寫,但可以被子類方法隱藏。
靜態代碼塊:用static修飾的代碼塊,在類加載時執行。靜態代碼塊在類加載時只會執行一次,并且只能訪問類的靜態變量和方法。靜態代碼塊常用于進行一些靜態變量的初始化操作。
靜態內部類:被static修飾的內部類,稱為靜態內部類。靜態內部類與普通內部類不同,它不能直接訪問外部類的非靜態成員,只能訪問外部類的靜態成員。
總結:
static修飾的成員屬于類本身,而非實例;
靜態成員在類加載時被初始化,并且只會被初始化一次;
靜態成員可以通過類名直接訪問,也可以通過實例對象訪問;
靜態方法可以直接調用,而不需要創建類的實例對象;
靜態方法不能直接訪問非靜態成員;
靜態代碼塊在類加載時執行,只能訪問靜態成員;
靜態內部類與普通內部類不同,不能直接訪問外部類的非靜態成員。