java-程式碼塊以及程式碼塊執行順序
阿新 • • 發佈:2019-02-08
程式碼塊:
用{}括起來的程式碼。
根據{}的位置可以分為
區域性程式碼塊:方法中,區域性位置,作用:限定變數作用範圍和生命週期。
構造程式碼塊:在類中方法外(成員位置),用{}括起來的程式碼。
靜態程式碼塊》構造程式碼塊》構造方法
用{}括起來的程式碼。
根據{}的位置可以分為
區域性程式碼塊:方法中,區域性位置,作用:限定變數作用範圍和生命週期。
構造程式碼塊:在類中方法外(成員位置),用{}括起來的程式碼。
每次呼叫構造方法執行前,都會執行構造程式碼塊,
作用:把類中不同構造方法中相同的部分提取出來定義到構造程式碼塊中,以後無論呼叫哪個構造方法都會執行相同操作。可以理解對物件初始化。
靜態程式碼塊:在類中方法外(成員位置),用{}括起來,用static修飾。作用:給類進行初始化。
程式碼塊執行順序:靜態程式碼塊》構造程式碼塊》構造方法
靜態程式碼塊:只執行一次
構造程式碼塊:每次建立該類物件,呼叫構造方法就執行,先於構造方法。
下面通過一個案例進行解析:
package day08;
public class DaiMaKuai {
static {
System.out.println("大家好我是靜態程式碼塊!");
}
{
System.out.println("大家好我是構造程式碼塊!");
}
public DaiMaKuai(){
System.out.println("大家好我是構造方法!");
}
}
入口類:
輸出:package day08; public class DaiMaKuaiDemo { static { System.out.println("河南科技大學!"); } public static void main(String[] args) { System.out.println("洛陽牡丹甲天下!"); //建立DaiMaKuai類物件 System.out.println("-------------------------"); DaiMaKuai dmk = new DaiMaKuai(); System.out.println("-------------------------"); DaiMaKuai dmk1 = new DaiMaKuai(); } }
河南科技大學!
洛陽牡丹甲天下!
-------------------------
大家好我是靜態程式碼塊!
大家好我是構造程式碼塊!
大家好我是構造方法!
-------------------------
大家好我是構造程式碼塊!
大家好我是構造方法!
解析:
通過輸出結果可以看出,程式最先載入類執行入口類中的靜態程式碼塊列印輸出“河南科技大學”
然後接著執行main方法列印後面的程式語句“洛陽牡丹甲天下”,
接著建立DaiMaKuai類的物件載入類執行該類中的靜態程式碼塊輸出“大家好我是靜態程式碼塊!”
接著執行構造程式碼塊輸出“大家好我是構造程式碼塊!”
最後執行構造方法 輸出“大家好我是構造方法!”,
接著又建立一個物件,注意這時靜態程式碼塊不再執行(只加載一次),
直接執行構造程式碼塊輸出“大家好我是構造程式碼塊!”
最後執行構造方法輸出“大家好我是構造方法!”