您如何向初学者很好地解释以下摘录中String args[]
的含义和static
的使用?
class FirstApp {
public static void main(String[] args) {
...
}
}
我会分手
public static void main(String args[])
部分:
<小时 />
public
这意味着您可以从当前所在的类外部调用此方法。这是必需的,因为此方法由不在当前类中的 Java 运行时系统调用。
<小时 />
static
当 JVM 调用 main 方法时,被调用的类不存在任何对象,因此它必须具有静态方法才能允许从类调用。
<小时 />
void
Java是独立于平台的语言,如果它将返回一些值,那么该值对于不同的平台可能意味着不同的东西。还有其他方法可以在多线程系统上退出程序。详细解释。
<小时 />
main
这只是方法的名称。此名称是固定的,JVM 将其称为应用程序的入口点。
String args[]
这些是 Java 应用程序在运行时接受的字符串类型的参数。
我会向初学者指出有关 Main 函数的 Wiki 文章,然后用这个来补充它。
-
Java只开始运行具有特定
public static void main(String[] args)
签名的程序,人们可以将签名视为自己的名字 - 这就是Java如何区分其他人的main()
和一个真正的main()
。 -
String[] args
是String
的集合,由空格分隔,可以在终端上的程序中键入。 很多时候,初学者不会使用这个变量,但它总是在那里以防万一。
public static void main(string [] args)
public
- 它是访问说明符意味着从我们可以访问它的每一个地方; static
-access 修饰符意味着我们可以直接使用类名调用此方法,而无需创建它的对象; void
- 这是返回类型; main
- 方法名称 string [] args
- 它只接受字符串类型的参数...并将其存储在字符串数组中
-
public
:它是一个访问说明符,意味着它将被公开访问。 -
static
:它是访问修饰符,这意味着当加载Java程序时,它将自动在内存中创建空间。 -
void
:它是一个返回类型,即它不返回任何值。 -
main()
:它是一个方法或函数名称。 -
string args[]
:它是一个命令行参数,它是字符串格式的变量集合。
如果我向某人解释这一点,我会说我们稍后会谈到它,现在你需要知道运行程序的方法是使用:
public static void main(String[] args) {
...
}
假设他/她知道数组是什么,我会说 args 是一个参数数组,你可以展示一些很酷的例子。
然后,在你了解了Java/JVM之类的东西之后,你最终也会得到静态和公共的修饰符。
然后你可以花一些时间谈论这些恕我直言的含义。
你可以提到其他"酷"的东西,比如varargs,你可以在以后的Java版本中使用它。
public static void main(String ...args) {
//...
}
我只是想我会加入这个。不过,其他人已经很好地回答了这个问题。
完整的主方法声明应该是:
public static void main(final String[] args) throws Exception {
}
参数被宣布为最终参数,因为从技术上讲,它们不应该被更改。它们是用户给出的控制台参数。
您通常应该指定 main 抛出异常,以便可以轻松地将堆栈跟踪回显到控制台,而无需执行 e.printStackTrace() 等操作。
至于数组语法。我更喜欢这种方式。我想这有点像法语和英语之间的区别。在英语中是"一辆黑色汽车",在法语中是"一辆黑色汽车"。哪个是重要的名词,汽车或黑色?
我不喜欢这种事情:
String blah[] = {};
这里重要的是它是一个字符串数组,所以它应该是
String[] blah = {};
废话只是一个名字。我个人认为在 Java 中,有时可以用这种方式声明数组有点错误。
为了保持初学者的态度,您可以解释所有命令行都自动拆分为字符串数组(String[]
)。
对于static
你必须解释,它不是一个像另一个字段这样的字段:即使你有一千个类实例,它在 JVM 中也是唯一的
所以main
是静态的,因为它是在jar
中找到它(在其自己的类中链接)的唯一方法。
在你看完编码之后,你的工作开始了.
static 的正常用法是直接访问函数,而无需创建任何对象。与在java main中一样,我们无法为该类创建任何对象来调用main方法。它将自动执行。如果我们想手动执行,我们可以在类内部使用 main() 和从类外部使用 ClassName.main 调用。