2013-04-07 41 views

回答

0

這是一個java程序的啓動方法:

public static void main(String[] args){ 
    ... 
} 
+0

我是對還是錯?我在viva中表示,執行從一個java程序中的靜態塊開始。 – user2096592 2013-04-07 14:40:38

+0

是的,你是正確的,但不是靜態集團,它應該是一個靜態方法(主要方法) – TheEwook 2013-04-07 14:42:15

2

主要方法是入口點到您的程序。如果包含「main」方法的類具有需要初始化的靜態成員或靜態代碼塊,則將在「main」方法之前執行。

看看這個示例代碼:

public class Test { 

    private static Object obj = new Object(); 

    public static void main(String[] args) { 

     System.out.println("test"); 
    } 

} 

如果你把一個斷點在對象初始化行,你會看到它的println線之前運行。

+0

這是唯一的答案,其中作者實際上_read_被問到什麼。這就是在同一個類「main」中的靜態塊是否在它之前被執行。 – 2013-04-07 14:38:36

+0

我是對還是錯?我在viva中表示,執行從一個java程序中的靜態塊開始。 – user2096592 2013-04-07 14:38:36

+0

如果靜態代碼是包含「main」方法的類的一部分,那麼您是對的。這是我認爲唯一正確的情況。 – Avi 2013-04-07 14:40:08

4

這個PROGRAMM的輸出:

public class XXX { 

    static YYY dependend = new YYY(); 

    static { 
     System.out.println("3"); 
    } 

    public static void main(String[] args) { 
     System.out.println("4"); 
    } 
} 

class YYY { 
    static { 
     System.out.println("1"); 
    } 
    YYY(){ 
     System.out.println("2"); 
    } 
} 

,當然

1 
2 
3 
4 

所以:你的程序的切入點main。但是之前有代碼被執行。並且沒有必要將這個「在主要代碼之前執行」的代碼放在同一個類中。此代碼也不需要在靜態初始化器中(請參閱「2」)。

+0

我可以說執行和輸入點都是不同的東西嗎? – user2096592 2013-04-10 13:30:00

+0

是的,他們是不同的東西。 – 2013-04-10 17:15:25

0

靜態塊在初始化類時執行。對於包含main方法的類,它將在調用此方法之前,因爲類必須在使用它的任何方法之前進行初始化。對於其他類,如果該類不需要進行初始化,則它可以晚於或不再初始化。

0

一個Java應用程序將通過主方法被正常初始化:當JVM加載這個類

public static void main(String... args){ 
    System.out.println("Executing my application..."); 
} 

靜態塊將被執行。如果沒有主要方法,則無法啓動應用程序,否則JVM將顯示錯誤消息。
理論上可以用靜態塊(example)來執行你的代碼。但是,初始化應用程序是一種不好的方式,因爲doSomethingElse方法可能會被其他腳本調用,該腳本不想創建gui(或者您在初始化方法中執行的任何操作)。例如:

class Test2 extends Object{ 
    public static void doSomething(){ 
     System.out.println("Calling Test's doSomethingElse method."); 
     Test.doSomethingElse(); 
    } 
} 

的Test2的doSomething方法只需要呼叫doSomethingElse,但它創建GUI的方法也被稱爲,因爲該類Test由JVM加載。當JVM加載一個類 - 並且該類有一個靜態塊 - 靜態塊將在第一時間被調用。測試的靜態塊現在調用executingClass方法和圖形用戶界面將被創建(但Test2的希望只能調用doSomethingElse

最後,你不應該使用靜態塊來初始化您的應用程序:

  1. 靜塊只能用於創建該類所需的東西。
  2. main方法也是必需的。
  3. 它可能有不可預知的影響。
相關問題