2014-02-24 41 views
1

我們可以調用主要主要方法嗎?在java中主要調用主要方法

public static void main(String[] args) { 
    main({"a","b","c"}); 
} 

嘗試google.Can找不到鏈接。 對不起,如果問題是微不足道的

+2

不要谷歌它,只是嘗試一下,看看會發生什麼。你認爲會發生什麼? –

+1

導致compliation錯誤 – abc

+0

您應該查看數組初始化表達式。 –

回答

12

你可以,但使用正確的格式

main(new String[] {"a","b","c"}); 

應該給的StackOverflowError(未測試)

+0

這是StackOverFlowError –

4

你會得到StackOverFlowError。如果你調用無盡的遞歸調用/深層函數遞歸。

Thrown when a stack overflow occurs because an application recurses too deeply.

你需要傳遞String數組一樣

main(new String[] {"a","b","c"}); 
1

Kugathasan是正確的。

是的,它確實給了StackOverflow異常。我現在在Eclipse中測試它。

class CallingMain 
{ 
    public static void main(String[] args) 
    { 
     main(new String[] {"a","b","c"}); 
    } 
} 

我有一個建議,我認爲消除混淆的最好方法是嘗試編碼並運行它。有很多疑問。

2

你可以。這是非常合法的。
此外,它不一定給予的StackOverflowError:

public static void main(String args[]){ 

    int randomNum = (int)(Math.random()*10); 

    if(randomNum >= 8) 
    System.exit(0); 

    System.out.print("Heyhey!"); 
    main(new String[]{"Anakin", "Ahsoka", "Obi-Wan"}); 

} 

隨便說。

0

您可以簡單地傳遞參數,如main(new String[1]) - 此行將調用您的程序的主要方法。但是,如果您通過「new String[-1]」,則會給出NegativeArraySizeException。這裏I'mm給嵌套內部類的例子,其中我打電話的主要方法:

class Outer 
{ 
    static class NestedInner 
    { 

     public static void main(String[] args) 
     { 
      System.out.println("inside main method of Nested class"); 

     }//inner main 
    }//NestedInner 
    public static void main(String[] args) 
    { 

     NestedInner.main(new String[1]);//**calling of Main method** 
     System.out.println("Hello World!"); 
    }//outer main 
}//Outer 

輸出: - 嵌套類

的Hello World的主要方法裏面!

+0

不,你不能!儘管編譯器不會抱怨,但您創建的遞歸會相當快地耗盡堆棧。 – user8

+0

此代碼不適用於遞歸,這是簡單的調用代碼如何調用Main方法 –

+0

當您從main調用main時,它是什麼? – user8