首先,靜態代碼塊,構造代碼塊,和構造函數都存在於一個類中,只不過,他們執行的前後順序和執行的次數不一樣。java
靜態代碼塊,只執行一次,好比,當你想要建立10個對象時,當建立第一個對象時,執行一次,而後當你繼續建立剩餘的對象時,這個靜態代碼塊就不會被執行了。函數
而構造代碼塊與構造函數的異同點: 相同點:每建立一個對象,構造代碼塊和構造函數都執行一次,不一樣點:執行的順序不一樣,先執行構造代碼塊,再執行構造方法。code
public class statictest { //構造代碼塊 { System.out.println("我是構造代碼塊1"); } //靜態構造代碼塊 static{ System.out.println("我是靜態構造代碼塊1"); } //構造函數 statictest() { System.out.println("我是構造函數"); } //構造代碼塊 { System.out.println("我是構造代碼塊2"); } //靜態構造代碼塊 static{ System.out.println("我是靜態構造代碼塊2"); } public static void main(String[] args) { //第一次建立對象 new statictest(); System.out.println("-------------------------------------------"); //第二次建立對象 new statictest(); } }
結果以下:對象
我是靜態構造代碼塊1
我是靜態構造代碼塊2
我是構造代碼塊1
我是構造代碼塊2
我是構造函數
-------------------------------------------
我是構造代碼塊1
我是構造代碼塊2
我是構造函數
class