1 static變量--靜態(tài)變量
靜態(tài)變量是隨著類加載時被完成初始化的,它在內存中僅有一個,且JVM也只會為他分配一次內存,同時類的所有實例都共享靜態(tài)變量,可以直接通過類名來訪問它
2 static方法--靜態(tài)方法
靜態(tài)方法可以通過類名直接調用
靜態(tài)方法必須實現(xiàn),也就是說它不能是抽象方法
3 static代碼塊--靜態(tài)代碼塊
- 靜態(tài)代碼塊會隨著類的加載一塊執(zhí)行,而且可以隨意放,可以存在于該類的任何地方
- 靜態(tài)代碼塊只會執(zhí)行一次
- 如果存在多個靜態(tài)代碼塊,則按照順序依次執(zhí)行
class Demo{
static{
System.out.println("Demo static code");
}
public Demo(String string) {
System.out.println(string + " construct");
}
}
public class Main {
static{
System.out.println("Main static code 1");
}
public static void main(String[] args){
new Demo("demo1");
new Demo("demo2");
}
static{
System.out.println("Main static code 2");
}
}
輸出:
Main static code 1
Main static code 2
Demo static code
demo1 construct
demo2 construct
4 static的局限
- 只能調用
static變量 - 只能調用
static方法 - 不能以任何形式引用
this、super -
static變量在定義時必須要進行初始化