一分鐘帶你瞭解類的初始化

一、首先來看看類的構成

 寫主方法	作用:運行(可選的)
 成員變量	作用:公共資源(可選的)
 普通方法	作用:公共資源(可選的)
 局部變量	作用:輔助運算(可選的)
 構造方法	作用:new對象(必須的且默認存在)
 內部類		(可選的)
 匿名內部類	(可選的)
 靜態代碼塊	(可選的)(擁有最高的優先級)

二、類的兩種初始化

類的初始化有兩種方法:
(1)構造方法
(2)靜態代碼塊

首先建立兩個類,一個實體類,一個測試類

  1. 構造方法
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);

	}

}

運行結果如下:

在這裏插入圖片描述

  1. 靜態代碼塊
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);

	}

}

運行結果如下:

在這裏插入圖片描述

乍一看,好像這兩種初始化方式效果是一樣的,但是呢,其實它們還是有不同之處的。

三、兩種方法的不同之處

  1. 構造方法
    在這裏插入圖片描述
    也就是說創建幾個對象就會執行幾遍,如下圖:
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);

	}

}

在這裏插入圖片描述

  1. 靜態代碼塊

在這裏插入圖片描述

所以不管創建了幾個對象,靜態代碼塊只會執行一遍,如下圖:

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、靜態代碼塊
最先初始化,只加載一次,單例模式

謝謝觀看
還請多多指正༼ つ ◕_◕ ༽つ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章