static (最經常用於定義工具類)
1:用來定義類的成員變量(類變量),
-
1:類變量需要被static修飾,實例變量不需要。
2:作用域不同,類變量的作用域更大
3:直接屬於類,所有的類成員在內存中只存在一份,存放在常量池中(而實例變量存在多份,存在堆內存中)
4:由於其直屬於類,所以可以通過類名直接調用。2:用來定義類方法
類方法也叫做靜態方法,只需要在實例方法上加上static 就是類方法,證明這個方法直接屬於類,可以通過類名直接調用。
我們調用靜態方法的時候,有可能是沒有創建實例對象的,所以在靜態方法中無法直接訪問實例屬性及方法。
所有的靜態成員在類被JVM加載的時候都已經存在,所以不需要聲明對象即可調用。
3.代碼塊分類:
1:靜態塊
直接寫在類中,被static修飾,在程序運行期間只會執行一次,在類被加載的時候執行
2:構造塊
直接寫在類中,每創建一個對象執行一次。
3:普通代碼塊
寫在方法中,一般很少使用,用於解決變量名衝突問題
4:同步塊
專門解決多線程問題,被同步塊修飾的代碼作用域同時只能進入一個線程。
static {
System.out.println("靜態代碼塊,只會執行一次");
}
{
System.out.println("構造代碼塊,每次創建的對象執行一次");
}