我最近在考試中被問到爲什麼我們只在java中使用主(String args[ ])
?爲什麼我們不在其他編程語言中使用主(String args[ ])
?爲什麼我們只在Java中使用(String args [])?
回答
main()
等形式進入應用程序入口點的方式是該語言的一部分。它在特定語言中以特定方式完成的原因是因爲該語言的作者已經看到了語言運行時系統(OS抽象層,如果該語言需要運行下面的操作系統)和程序員之間的協議。
我可以假設,在Java中它被做main(String[] args)
因爲語言是由C++
的方式啓發(因此main()
被保留下來)和String[] args
這是Java的方式來傳遞一個字符串數組到函數。
關於…
「爲什麼我們在其他編程語言中不使用
main (String ars[])
? 」
那’這個問題是一個有缺陷的假設。
// Hello3.cs
// arguments: A B C D
using System;
public class Hello3
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Console.WriteLine("You entered the following {0} command line arguments:",
args.Length);
for (int i=0; i < args.Length; i++)
{
Console.WriteLine("{0}", args[i]);
}
}
}
爲什麼我們不使用任何其他編程語言的主要(字符串ARS [])?
因爲你喜歡這樣做可能。如果你問你是否可以在其他語言(如C++,與你標記的主題)做到這一點,答案是:是的,你可以。
他們語法C++是:
int main(int argc, char *argv[])
或者 - 如果你想也包括環境變量:
int main(int argc, char *argv[], char *envp[])
'envp'參數是一種通常支持的,但不是C++標準的一部分。 –
的Java有一個內置的String類這樣的參數給類的主方法由String args []或String數組表示。 而在C++中,沒有內建在String類中,因此參數由char * argv表示,而它們的計數由int argc表示。
調用應用程序的UNIX接口是將單個命令行標記收集到一個字符串數組中,並將該數組傳遞給應用程序的入口點。 UNIX定義該入口點被命名爲「main」,並且命令行標記將被表示爲指向C樣式空終止字符串的指針數組。由於沒有其他辦法知道數組的大小,數組大小傳遞作爲一個單獨的參數:
main(int argc, char* argv[])
MSDOS和Windows複製這個方案,所以它已經變得相當標準。
即使Java程序不是直接從操作系統調用,Java的設計者選擇使用類似的(熟悉的)範例,其中命令行標記將作爲數組傳遞給名爲「main」的方法的Java字符串對象。
我不記得MS-DOS方案,但Windows使用單個進程*命令行*,每個應用程序都可以根據需要進行分析。請參閱GetCommandLine API函數。還有一個命令行解析功能,它執行標準解析。 –
@ Cheersandhth.-Alf - 由於有層次,它有點混亂。這是一個真正的操作系統和執行映射的語言之間的「膠合」層,我想。 –
- 1. 爲什麼我們使用@ html.action(string,object)?
- 2. 爲什麼我們通常使用public static void main('String [] args')啓動程序?
- 3. 如何在java中使用(String [] [] args)
- 4. 爲什麼不在String中使用Java?
- 5. 爲什麼在主要方法中必須提及「String args []」,如果我們輸出args [],爲什麼我們要把它作爲輸出:「[Ljava.lang.String; @ 174e5edb」?
- 6. 我們如何在java中傳遞String [] args
- 7. Java中的String ... args和String []參數有什麼區別嗎?
- 8. Java中的String []和(String ... args)有什麼區別?
- 9. 爲什麼我在Java String中有?
- 10. 爲什麼這個代碼只能在*()中使用* args?
- 11. 爲什麼我們需要在getline(cin,string)之前使用cin.ignore()?
- 12. 爲什麼Java main()方法接受一個String args數組?
- 13. 爲什麼我們在JAVA中使用這段代碼?
- 14. Main類中的「string [] args」是什麼?
- 15. 爲什麼我們在jQuery中使用「({})」?
- 16. 在main方法中,String []與String ... args有什麼不同?
- 17. 我們爲什麼要申報「字符串ARGS []」,而不是字符串ARGS在Java中
- 18. 爲什麼我們需要裝飾器中的`* args`?
- 19. 我們可以使用public static void main(String [] [] args)嗎?
- 20. 爲什麼我們在Java項目中使用Strategy Facade
- 21. 爲什麼我們不能在Java中使用指針?
- 22. par文件爲什麼我們在java開發中使用它
- 23. 爲什麼我們在java中使用「?super T」?
- 24. 爲什麼我們在java項目中使用rt.jar?
- 25. 爲什麼我們在Java中使用堆棧和隊列?
- 26. 爲什麼我們不應該在Java中使用
- 27. 爲什麼我們在java logger中使用:: {}
- 28. 爲什麼我們在Java中使用基類
- 29. Java中var-args的用法是什麼?
- 30. 爲什麼使用id的時候我們只能使用NSObject?
這是在C#以及,不是一個很好的考試問題:) – aw04
奇怪的問題...而我想你的意思'字符串[] args'。無論如何,'String [] args'和'String args []'是相同的,儘管在Java中首選形式是首選。 – fge
是的,「ars」是完全不同的東西。 –