1. 程式人生 > >java中程式碼塊的認知

java中程式碼塊的認知

  在以往面試題中,出現過很多次關於程式碼塊執行順序的題目,目前可算是搞清楚執行順序了。看以下程式碼:

  

package com.itcast.code;

public class BlockTest {
    static{
        System.out.println("我是BlockTest的靜態程式碼塊");
    }
    public BlockTest(){
        System.out.println("我是BlockTest的無參構造");
    }
    {
        System.out.println("我是BlockTest的構造程式碼塊
"); } public static void main(String[] args) { System.out.println("我是BlockTest的主函式。。。"); Coder c = new Coder(); Coder c2 = new Coder(); } } class Coder{ static{ System.out.println("我是Coder的靜態程式碼塊。。。"); } { System.out.println("我是Coder的構造程式碼塊。。。
"); } public Coder(){ System.out.println("我是Coder的無參構造。。。"); } }

以上程式碼執行結果是:我是BlockTest的靜態程式碼塊  ------>   我是BlockTest的主函式。。。  ------>    我是Coder的靜態程式碼塊。。。    ------>   我是Coder的構造程式碼塊。。。

------>     我是Coder的無參構造。。。     ------>    我是Coder的構造程式碼塊。。。     ------->     我是Coder的無參構造。。。

 

靜態程式碼塊最先執行,因為它是隨著類的載入而載入,優先於物件的存在。其次執行的是主函式,因為主函式是程式執行的入口,在靜態程式碼塊執行完之後必然是它執行。然後因為建立了Coder物件,那麼它肯定會先執行它自己的靜態程式碼塊,接著呼叫構造程式碼塊,最後再呼叫無參構造對物件進行初始化。

 

一個完美的執行流程就是這樣,每天學習一點點,每天進步一點點,加油吧騷年!期待下一次的面試題能夠完美解答!