從哪裏開始Java程序的執行?我聽到人們從主要的方法說它。我認爲執行從靜態塊開始。我對嗎??從哪一行開始執行Java程序?它是主要的方法嗎?
回答
這是一個java程序的啓動方法:
public static void main(String[] args){
...
}
主要方法是入口點到您的程序。如果包含「main」方法的類具有需要初始化的靜態成員或靜態代碼塊,則將在「main」方法之前執行。
看看這個示例代碼:
public class Test {
private static Object obj = new Object();
public static void main(String[] args) {
System.out.println("test");
}
}
如果你把一個斷點在對象初始化行,你會看到它的println線之前運行。
這是唯一的答案,其中作者實際上_read_被問到什麼。這就是在同一個類「main」中的靜態塊是否在它之前被執行。 – 2013-04-07 14:38:36
我是對還是錯?我在viva中表示,執行從一個java程序中的靜態塊開始。 – user2096592 2013-04-07 14:38:36
如果靜態代碼是包含「main」方法的類的一部分,那麼您是對的。這是我認爲唯一正確的情況。 – Avi 2013-04-07 14:40:08
這個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」)。
我可以說執行和輸入點都是不同的東西嗎? – user2096592 2013-04-10 13:30:00
是的,他們是不同的東西。 – 2013-04-10 17:15:25
靜態塊在初始化類時執行。對於包含main
方法的類,它將在調用此方法之前,因爲類必須在使用它的任何方法之前進行初始化。對於其他類,如果該類不需要進行初始化,則它可以晚於或不再初始化。
一個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
最後,你不應該使用靜態塊來初始化您的應用程序:
- 靜塊只能用於創建該類所需的東西。
main
方法也是必需的。- 它可能有不可預知的影響。
- 1. 編程方法執行的開始時間 - 當時開始執行的方法
- 2. 程序執行是否始終從C中的main開始?
- 3. python從哪裏開始執行代碼?
- 4. 爲java主要方法執行創建了多少個線程?
- 5. 這是Java執行程序時調用的第一個方法嗎?
- 6. 哪種方法用於終止Java程序之間的執行?
- 7. 執行一種方法在其他幾種方法的開始
- 8. Shell腳本調用運行java程序的非主要方法
- 9. 如何定義運行Java程序的主要方法?
- 10. java可以優先執行哪個方法並按哪個順序執行?
- 11. 從事件處理程序在主線程中執行方法
- 12. 無法使用主要方法執行靜態塊嗎?
- 13. 這是一個可執行的應用程序嗎? /執行一個javascript程序
- 14. 這是一個在java中執行查詢的好方法嗎?
- 15. 沒有主要方法的Java程序
- 16. 執行程序從Java
- 17. 主要方法未能執行毛刺?
- 18. 確定是否從另一個java應用程序執行java執行成功
- 19. 如何從不同的功能開始在C/C++程序的執行,但不是主要的()
- 20. CUDA線程按照它們開始的相同順序執行
- 21. Java不執行主要方法中的所有代碼
- 22. Java線程執行程序提交主要類
- 23. 從另一個AppDomain的程序集複製方法,並從CurrentDomain執行它
- 24. 主要方法有兩個類,它們將首先執行?
- 25. 從Java遠程執行Java程序
- 26. 執行流程從apache模塊開始到哪裏?
- 27. Java程序中可以有兩種主要的方法嗎?
- 28. 計劃執行程序的計劃方法只執行一次
- 29. 什麼是程序中斷?它從哪裏開始,0x00?
- 30. JDK 6:有沒有辦法運行一個新的java進程,執行指定類的主要方法
我是對還是錯?我在viva中表示,執行從一個java程序中的靜態塊開始。 – user2096592 2013-04-07 14:40:38
是的,你是正確的,但不是靜態集團,它應該是一個靜態方法(主要方法) – TheEwook 2013-04-07 14:42:15