我們可以將參數args[]
設爲main()
方法或選擇不選。但是如果我們調用任何其他參數化方法而沒有傳遞足夠的參數,它會給我們一個錯誤。當我們不傳遞任何命令行參數時,爲什麼不出現錯誤?
爲什麼方法不是這種情況?
我們可以將參數args[]
設爲main()
方法或選擇不選。但是如果我們調用任何其他參數化方法而沒有傳遞足夠的參數,它會給我們一個錯誤。當我們不傳遞任何命令行參數時,爲什麼不出現錯誤?
爲什麼方法不是這種情況?
因爲Main
是特殊的,並且在沒有任何東西給出的情況下自動獲取空的String array
。正如那準確地描述沒有參數調用main()
。該系統爲此提供了方便。
錯了。 'null'與它無關。 – aioobe
Java使用參數調用主方法本身,所以即使我們沒有參數「調用」也沒有錯誤。
即使沒有命令行參數,總是會傳遞一個String數組。在這種情況下該陣列的長度爲0,這可以通過
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("no parameters were passed");
}
}
public static void main(String[] args)
main
總是接收其參數,這是String
陣列測試自己。如果你沒有傳遞任何命令行參數,args
是空的,但它仍然存在。
正如你所看到的,主除了一個函數參數 - 這是一個字符串數組。 JVM負責將任何命令行參數作爲字符串數組傳遞給主函數。如果沒有給出參數,則會傳遞一個空數組 - 但它仍然存在。
您可能也有自己的功能定義爲這樣:
void myMain(String args[]) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
然後,您可以調用這個函數,模擬傳遞三個命令行參數:
String a[] = {"foo", "bar", "bah"};
myMain(a);
或者你也可以效仿情況在沒有命令行參數給出:
String a[] = {};
myMain(a);
您也可以通過args
從現實主到你的函數,如果任何參數分別給予或不是會不顧工作:
public static void main(String[] args) {
myMain(args);
}
注意,有一個在myMain
沒有空指針檢查,因此,如果你傳遞一個null
它會拋出NPE。
你能更清楚,你是如何執行應用程序有和沒有參數? – medopal
相關的答案,你可以像這樣'public void myMethod(String ... array)'這樣你可以傳遞n個參數的數量甚至0,它不會給出錯誤。 – medopal