我最近在考试中被问到为什么我们只在java中使用main (String args[ ])
?为什么我们不在任何其他编程语言中使用main (String args[ ])
?
答案 0 :(得分:5)
main()
以及将入口点整形到应用程序中的其他方法是语言的一部分。它在特定语言中以特定方式完成的原因是因为该语言的作者已经看到了语言运行时系统(操作系统抽象层,如果该语言需要在其下运行OS)和程序员那样的协议。
我可以假设在Java中它是main(String[] args)
,因为该语言在某种程度上受C++
的启发(因此保留了main()
)和String[] args
这是Java方法将字符串数组传递给函数。
答案 1 :(得分:5)
...关于
“为什么我们不在任何其他编程语言中使用
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]);
}
}
}
答案 2 :(得分:0)
为什么我们不在任何其他编程语言中使用main(String ars [])?
因为你喜欢这样做。如果你问可以用其他语言(比如C ++,你用哪个标记主题)来做,那么答案是:是的,你可以。
他们的C ++语法是:
int main(int argc, char *argv[])
或 - 如果您还想要包含环境变量:
int main(int argc, char *argv[], char *envp[])
答案 3 :(得分:0)
Java有一个内置的String类,因此类的main方法的参数由String args []或String数组表示。 而在C ++中,没有内置String类,因此参数由char * argv表示,而其计数由int argc表示。
答案 4 :(得分:0)
用于调用应用程序的UNIX接口是将单个命令行标记收集到字符串数组中,并将该数组传递到应用程序的入口点。 UNIX定义此入口点名为“main”,并且命令行标记将表示为指向C样式的以null结尾的字符串的指针数组。由于没有其他方法可以知道数组的大小,因此数组大小作为单独的参数传递:
main(int argc, char* argv[])
MSDOS和Windows复制了这个方案,因此它已经变得非常标准。
尽管Java程序不是直接从操作系统调用的,但Java的设计者选择使用类似的(熟悉的)范例,其中命令行标记将作为一个数组传递给名为“main”的方法。 Java String对象。