靜態程式碼塊,構造程式碼塊,構造方法三者的區別與聯絡
1.首先在任何一個類中,一般來說一定存在著構造方法,即使什麼也沒寫,那就說明類中預設是無參的構造方法,例如
public class Student{
private int age;
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void show(){
System.out.println("學生愛學習");
}
}
這是一個完整的類,包括成員屬性,還有成員方法,同時還包括了構造方法,此時的構造方法時隱式無參的,是可以進行初始化的,但是如果一個類中有如下的內容
public class Studeng{
private int age;
static{
System.out.println("這是靜態程式碼塊");
}
Student(){
System.out.println("這是構造程式碼塊");
}
public Student(){
System.out.println("這是無參構造方法");
}
public Student(int age){
this.age=age;
System.out.println("這是有參的構造方法")
}
}//一般來說。構造方法是用來初始化的,一般每產生一個新的物件便會執行一次,但是執行有參的操作要看具體的情況,但是每次有且只能執行一個,但是構造程式碼塊,也是每次產生新類的時候就執行一次,但是是一定要執行,且不能進行過載,靜態程式碼塊,只有當類載入的時候,只能執行一次,當程式中沒有寫構造方法時,預設是 無參的,但是當沒有顯示的寫出靜態程式碼塊和構造程式碼塊是沒有預設的,也就是靜態程式碼塊和構造程式碼塊在程式中是可以省略的,(一個程式中可以同時存在幾個靜態程式碼塊)
例項:
public class TestDemo{
public static void main(String[] args){
Student student=new Student();
System.out.println("---------------------------------------------------------------------------");
Student student2=new Student();
System.out.println("-----------------------------------------------------------------------------");
Student student3=new Student(18);
}
}
//最後的執行結果就是 這是靜態程式碼塊
這是構造程式碼塊
這是無參構造方法
-----------------------------------------------------------------------------
這是構造程式碼塊
這是無參構造方法
-----------------------------------------------------------------------------
這是構造程式碼塊
這是有參的構造方法