一、首先來看看類的構成
寫主方法 作用:運行(可選的)
成員變量 作用:公共資源(可選的)
普通方法 作用:公共資源(可選的)
局部變量 作用:輔助運算(可選的)
構造方法 作用:new對象(必須的且默認存在)
內部類 (可選的)
匿名內部類 (可選的)
靜態代碼塊 (可選的)(擁有最高的優先級)
二、類的兩種初始化
類的初始化有兩種方法:
(1)構造方法
(2)靜態代碼塊
首先建立兩個類,一個實體類,一個測試類
- 構造方法
package 類的初始化;
//實體類代碼
public class Dog {
int id;
String name;
// 構造方法初始化類
public Dog() {
this.id = 1;
this.name = "大黃";
System.out.println("初始化完畢");
}
}
然後測試類進行測試
package 類的初始化;
public class Test {
public static void main(String[] args) {
Dog d1 = new Dog();
System.out.println(d1.id);
System.out.println(d1.name);
}
}
運行結果如下:
- 靜態代碼塊
package 類的初始化;
//實體類代碼
public class DogStatic {
static int id;
static String name;
static {
id = 1;
name = "大黃";
System.out.println("初始化完畢");
}
}
然後測試類進行測試
package 類的初始化;
public class TestStatic {
public static void main(String[] args) {
DogStatic d1 = new DogStatic();
System.out.println(d1.id);
System.out.println(d1.name);
}
}
運行結果如下:
乍一看,好像這兩種初始化方式效果是一樣的,但是呢,其實它們還是有不同之處的。
三、兩種方法的不同之處
- 構造方法
也就是說創建幾個對象就會執行幾遍,如下圖:
package 類的初始化;
public class Test {
public static void main(String[] args) {
Dog d1 = new Dog();
Dog d2 = new Dog();
Dog d3 = new Dog();
System.out.println(d1.id);
System.out.println(d1.name);
}
}
- 靜態代碼塊
所以不管創建了幾個對象,靜態代碼塊只會執行一遍,如下圖:
package 類的初始化;
public class TestStatic {
public static void main(String[] args) {
DogStatic d1 = new DogStatic();
DogStatic d2 = new DogStatic();
DogStatic d3 = new DogStatic();
System.out.println(d1.id);
System.out.println(d1.name);
}
}
四、總結
1、構造方法
每次都初始化新的,只要初始化,就會調用構造方法,原型模式
2、靜態代碼塊
最先初始化,只加載一次,單例模式
謝謝觀看
還請多多指正༼ つ ◕_◕ ༽つ