Java代碼塊的詳細講解

1 、構造方法

1.1 概念

  • 構造方法是一種特殊的方法,它是一個與類同名且返回值類型爲同名類類型的方法。
  • 對象的創建就是通過構造方法來完成。
  • 其功能主要是完成對象的創建或者對象的初始化。
  • 當類實例化new一個對象時會自動調用構造方法。
  • 構造方法和其他方法一樣也可以重載(方法名相同+參數列表不同)。

1.2 形式

  • 可以無參也可以有參

修飾符 類名(參數列表){
代碼…… }


構造方法創建對象:

public class Test1_Constructor {
    public static void main(String[] args) {
       //創建對象時  會  自動  調用構造方法
       //3、new Person();  會自動調用無參構造
        Person p = new Person();
       //4、new Person("rose");  會自動調用含參構造 
       Person p2 = new Person("rose");
    }
}

//創建Person類            
class Person{
    //修飾符 類名( 參數列表 ){ 代碼 }
    //1、顯示的提供無參構造方法    --  無參的構造方法默認就會存在 !!
    //5、當程序中,只提供含參構造時,無參構造會被覆蓋就沒有了!!
    public Person() {
       System.out.println("無參構造...");
    }
    //構造方法是一個特殊的方法:特殊在1、沒有返回值  2、方法名是類名
    //2、構造方法也是可以進行重載的:方法名相同  參數列表不同
    public Person(String name) {
       System.out.println("含參構造..."+name);
    }
}

構造方法賦值:

public class Test2_Constructor2 {
    public static void main(String[] args) {
       //創建對象 測試
       //1、會自動調用 無參構造
       Person2 p = new Person2();
       //2、會自動調用 含參構造
       Person2 p2 = new Person2("jack");
   }
}
//創建Person2類
class Person2{
    //4、給私有屬性賦值的兩個方式:通過對象調用對應的setXxx()   或者  創建對象時利用構造方法賦值
    private String name;    
    public Person2() {
       System.out.println("無參構造");
    }
    public Person2(String n) {
       //3、拿着創建對象時傳遞過來的參數,給成員變量name賦值
       name = n ; 
       System.out.println(name);
    }
}

2 、構造代碼塊和局部代碼塊

2.1 構造代碼塊{ }

  • 1、 在類的內部,方法外部,的代碼塊。
  • 2、 通常用於抽取構造方法中的共性代碼。
  • 3、 每次調用構造方法前都會調用構造代碼塊new new new
  • 4、 優先於構造方法加載

public class Test3_Block {
    public static void main(String[] args) {      
       //創建Person3對象測試
       //2、在執行構造方法前  ,如果 有構造代碼塊,,就會先執行構造代碼塊再執行構造方法
       Person3 p = new Person3();   //先執行了構造代碼塊  再執行了 無參構造方法
       Person3 p2 = new Person3("jack");   //先執行了構造代碼塊   再執行了  含參構造方法
    }
}
//創建Person3類
class Person3{
    //1、構造代碼塊:位置是在類裏方法外
    //3、 構造代碼塊  的功能 :是提取構造方法中的 共性!!!
    String country ;
    {
           country = "中國人";//構造代碼塊
    }
    //無參構造  
    public Person3() {
       System.out.println("無參構造"+country);
    }
    //含參構造
    public Person3(String n) {
       System.out.println("含參構造"+n+country);
    }    
}

2.2 局部代碼塊

  • 1、 在方法裏面的代碼塊
  • 2、 通常用於控制變量的作用範圍,出了括號就失效
  • 3、 變量的範圍越小越好,成員變量會有線程安全問題

 public class Test4_Block2 {
    public static void main(String[] args) {
       //創建對象測試
       Person4 p = new Person4();//自動調用無參構造
       p.eat();
    }
}
//創建Person4類
class Person4{
    //默認就會存在無參構造   
    //方法
    public void eat() {
       //1、局部代碼塊:位置是在方法裏  +  觸發時間是當方法被調用時  + 意義是用來控制變量的作用範圍
       {
           int i = 10;
           System.out.println(i);
       }
       System.out.println("正在喫飯");
//     System.out.println(i);   //報錯,原因是已經超出了變量i的作用範圍
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章