1. 程式人生 > >Java中的四種程式碼塊

Java中的四種程式碼塊

這裡寫圖片描述
以下程式碼演示了建立一個物件並呼叫方法各個程式碼塊之間的優先關係:

public classPerson {

    static{
        System.out.println("1.我是靜態塊,優先於構造塊執行!並且只有建立第一個物件的時候執行一次!");
    }

    {
        System.out.println("2.我是構造塊,優先於構造方法執行!每建立一個物件執行一次!");
    }

    public Person() {
        System.out.println("3.我是構造方法,每建立一個物件執行一次");
    }

    public
void function1(){ System.out.println("我是非靜態方法中的普通程式碼塊,方法被呼叫時執行!"); } public static void function2(){ System.out.println("我是靜態方法中的普通程式碼塊,方法被呼叫時執行,晚於靜態塊執行!"); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

測試類:

public classHelloWrold {

    public
static void main(String[] args) { new Person().function1(); new Person().function1(); System.out.println("================="); Person.function2(); Person.function2(); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

執行結果:
這裡寫圖片描述
我們可以看出:靜態塊總是最先執行的,並且只有在建立該類的第一個例項的時候才會執行一次;第二執行的是構造塊;第三執行的是構造方法。

(function () {('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;varnumbering = $('').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append(numbering); for (i = 1; i