java中的程式碼塊概述
阿新 • • 發佈:2018-11-03
程式碼塊基本概念
什麼是程式碼塊?
在java中,每個用{}引起來的程式碼的集合就被稱作程式碼塊。
程式碼塊的分類
程式碼塊可分為區域性程式碼塊,構造程式碼塊,靜態程式碼塊,同步程式碼塊。
區域性程式碼塊
在方法中定義的,隨著方法的呼叫而載入,方法結束而釋放,及早釋放,提高記憶體利用率。
public class Test { public static void main(String[] args) { //定義在main方法中的程式碼塊 { int num=1; System.out.println("靜態程式碼塊執行了"); System.out.println(num); } } }
執行結果如下
靜態程式碼塊執行了
1
構造程式碼塊:在java類中,定義在成員方法外面。每次例項化該物件都會執行,並且在構造方法之前就會執行。
public class Student { private String name; private String sNum; int age; { System.out.println("構造程式碼塊執行了"); } public Student() { System.out.println("構造方法執行了"); } } class StudentTest{ public static void main(String[] args) { Student student = new Student(); Student student1 = new Student(); } }
執行結果:
構造程式碼塊執行了
構造方法執行了
構造程式碼塊執行了
構造方法執行了
靜態程式碼塊:用關鍵字static修飾的,定義在類中方法外,隨類的載入而載入,只執行一次。所以他的執行優先於該類中所有的方法,程式碼塊。
public class Demo1 { static{ System.out.println("靜態程式碼塊執行了1"); } public static void main(String[] args) { System.out.println("請看這裡!"); } static{ System.out.println("靜態程式碼塊執行了2"); } }
執行結果
靜態程式碼塊執行了1
靜態程式碼塊執行了2
請看這裡!
一個簡單的程式碼塊demo
public class Dog {
static {
System.out.println("Dog類中的靜態程式碼塊執行了。。。");
}
{
System.out.println("構造程式碼執行了。。。");
}
public Dog() {
System.out.println("構造方法執行了。。。。");
}
}
class DogTest{
static{
System.out.println("測試類中的靜態程式碼塊執行了。。。");
}
public static void main(String[] args) {
System.out.println("main方法執行了");
Dog dog = new Dog();
Dog dog1 = new Dog();
}
}
這段程式的執行結果如下:
測試類中的靜態程式碼塊執行了。。。
main方法執行了
Dog類中的靜態程式碼塊執行了。。。
構造程式碼執行了。。。
構造方法執行了。。。。
構造程式碼執行了。。。
構造方法執行了。。。。
首先:測試類載入,測試類裡面的靜態程式碼塊會優先執行,列印第一句,接下來main方法載入進棧記憶體,列印第二句話。然後建立第一個Dog類物件,Dog類載入,會執行Dog類中的靜態程式碼塊,列印第三句(無論後面執行什麼,靜態程式碼塊只執行一次),建立第一個物件dog,構造程式碼塊優先於構造方法執行,列印第四句,第五句,接下來建立第二個物件dog1,列印第六句和第七句。