在'公共静态无效的主要(string ARGS)'的'stringargs '和静态的解释'

你怎样才能解释得很好,对初学者来说String args[]的含义和static的使用在下面的摘录中?

 class FirstApp { public static void main(String[] args) { ... } } 

我将一个初学者指向Main函数的Wiki文章 ,然后用它来补充它。

  • Java只是开始运行一个具有特定public static void main(String[] args)签名的程序,人们可以想象一个像他们自己名字一样的签名 – 这就是Java如何区分别人的main()和真实main()

  • String[] argsString的集合,由空格分隔,可以键入terminal上的程序。 更多的时候,初学者不会使用这个variables,但它总是在那里以防万一。

我会分手

 public static void main(String args[]) 

部分:

public

这意味着您可以从您当前所在类的外部调用此方法。这是非常必要的,因为此方法由Java运行时系统调用,它不在您当前的类中。


static

当JVM调用main方法时,被调用的类不存在任何对象,因此必须使用静态方法来允许从类中调用。


void

Java是独立于平台的语言,如果它会返回一些值,那么这个值对于不同的平台可能意味着不同的东西。 还有其他方法可以在multithreading系统上退出程序。 详细说明 。


main

这只是方法的名称。 这个名字是固定的,并且被JVM调用为应用程序的入口点。


String args[]

这些是您的Java应用程序在运行时接受的Stringtypes的参数。

 public static void main(string [] args) 

public – 访问说明符指的是我们可以访问的每个地方; static访问修饰符意味着我们可以直接使用类名来调用这个方法,而不需要创build它的一个对象。 void – 它的返回types; main – 方法名称string [] args – 它只接受stringtypes的参数。并将其存储在string数组中

  • public :它是一个访问说明符,意味着它将被公开访问。
  • static :它是访问修饰符,这意味着当Java程序加载时,它会自动在内存中创build空间。
  • void :它是一个返回types,即它不返回任何值。
  • main() :它是一个方法或函数名称。
  • string args[] :它是一个命令行参数,它是一个string格式的variables集合。

如果我正在向某人解释这一点,那么我们现在就可以稍后再讨论这个问题,您需要知道运行程序的方式是使用:

 public static void main(String[] args) { ... } 

假设他/她知道一个数组是什么,我会说参数是一个参数数组,你可以显示一些很酷的例子。

然后,当你了解了一些关于Java / JVM和那些东西的东西之后,你最终还是会修改静态和公共的。

那么你可以花一些时间谈论这些恕我直言的意义。

你可能会提到其他“酷”的东西,比如可以在更高版本的Java中使用它的可变参数。

 public static void main(String ...args) { //... } 

为了保持初学者的态度,你可以解释为什么所有的命令行都是自动分成一个string( String[] )的数组。

对于static你必须解释,它不是像另一个领域:即使你有一千个类的实例在JVM中是唯一的

所以main是静态的,因为它是在jarfind它(在自己的类中链接)的唯一方法。

…看完编码后,你的工作就开始了…

静态的正常使用是直接访问该函数,无需创build任何对象。 和java main一样,我们也不能为这个类创build任何对象来调用main方法。 它会自动执行。 如果我们想手动执行,我们可以通过在类内使用main()和在类外使用ClassName.main来调用。

我只是认为我会在这一块。 尽pipe其他人已经得到了很好的回答。

完整的主要方法声明应该是:

  public static void main(final String[] args) throws Exception { } 

参数被宣布为最终的,因为从技术上讲不应该被改变。 它们是用户给出的控制台参数。

您通常应该指定主要抛出exception,以便堆栈跟踪可以轻松地回显到控制台而无需执行e.printStackTrace()等。

至于数组语法。 我喜欢这样。 我想这有点像法文和英文的区别。 英语中是“黑色车”,法语中是“黑色车”。 这是重要的名词,汽车还是黑色?

我不喜欢这样的事情:

 String blah[] = {}; 

这里重要的是它是一个String数组,所以它应该是

 String[] blah = {}; 

这只是一个名字。 我个人认为在Java中有时候可能会以这种方式声明数组。

当你从控制台启动你的应用程序时,你需要执行java -jar(filename)(args),所以如果你要运行一个从文件读取的程序,

如果你的程序被称为readFile,在你做了一个可执行的版本之后(我不会解释怎么做这个部分),你必须推出这个程序。

 java -jar readFile.jar C:/user/Matt/documents/myText.txt ^ launch program ^ args 

文件位置将是程序的args []。