對象只有在new的時候才會分配空間,有時候我們希望不管是否產生了對象或無論產生了多少對象的情況下,某些特定的數據在內存空間里只有一份,就可以static修飾成員,也稱靜態成員或類成員。
static可修飾屬性、方法、代碼塊、內部類。
特點:
- 隨著類的加載而加載(屬于類),優先于對象存在。
- static修飾的成員被所有對象所共享(也稱類成員)。
- 訪問權限允許時,可不創建對象,直接被類調用。
靜態成員引用格式:
類名.[靜態成員屬性/成員方法]
示例:
clasa Demo {private static String temp = "DEMO";public static void val() {System.out.println("Demo.val");}
}
class Test {public static void main(String[] args) {//直接使用類名調用System.out.println(Demo.temp;);Demo.val();}
}
靜態屬性、方法的設計思想:
- 靜態屬性作為該類各個對象之間共享的變量。在設計類時,分析哪些屬性不因對象的不同而改變,將這些屬性設置為靜態屬性,相應的方法設置為靜態方法。
- 如果方法與調用者無關,則這樣的方法通常被聲明為類方法,由于不需要創建對象就可以調用靜態方法,從而簡化了方法的調用。
使用注意:
- 類成員,直接使用
類名.靜態成員
,不需要實例化。 - static修飾的方法內只能調用static修飾的成員方法和成員變量,非static修飾的方法可以調用static修飾的成員(因為static修飾的成員優先對象加載)。
- static修飾的方法不能被重寫(因為static方法屬于類,不屬于對象)。
- static方法內部不能有this和super(因為不需要實例就可以方法static方法,this和super都屬于對象)。