1. 程式人生 > >java中的程式碼塊概述

java中的程式碼塊概述

程式碼塊基本概念

什麼是程式碼塊?

在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,列印第六句和第七句。