0
 class CmndLineArguments {

  public static void main(String[] args) {
    int length = args.length;
    if (length <= 0) {
    System.out.println("You need to enter some arguments.");
    }
   for (int i = 0; i < length; i++) {
    System.out.println(args[i]);
   }
   }
   }

command : java CmndLineArguments Mahendra zero one two three
output:
Mahendra
zero
one
two
three

这段代码是如何工作的?我们正在使用 String[] args ,所以我们不应该传递像 new String[]{.....}.. 这样的参数吗?

然后这种形式和 String...s 形式之间的区别/优势是什么...因为 varargs 用于在 String[] args 中传递零个或多个参数,我们也可以在没有零用户输入的情况下运行它(或java是否默认提供一些参数?)

4

4 回答 4

1

主要方法是特殊的。它由 JRE 调用,而不是由命令行调用。JRE 整理参数并将它们作为数组提供给 main 方法。这在 var args 之前,与它们无关。

于 2013-10-10T04:36:57.493 回答
0

主要方法是特殊的,String[] 表示法是经典的,但我现在经常看到 String... 表示法。事实上,我认为 varargs 更简洁,因为你知道,命令行中没有固定的数字或参数。

我不知道 JVM 是否将参数转换为字符串数组或字符串 varargs,但结果是一样的。

于 2013-10-10T04:42:53.443 回答
0

那么我们不应该传递像 new String[]{.....}.. 这样的参数吗?

你不能。声明该数组后,您从哪里将其传递给 main 方法?不。

公共静态无效主要(字符串 [] 参数)

那是你的程序的起点,那些参数是jvm从命令行挑选的。

来自 main 的官方文档

数组中的每个字符串称为命令行参数。命令行参数让用户无需重新编译即可影响应用程序的操作。例如,排序程序可能允许用户使用以下命令行参数指定数据按降序排序:

args和之间的区别 ... args

公共静态 void someMethod(String[] args)**

当您将 args 传递到此处时,调用者应声明一个数组并在此处传递数组对象。

公共静态无效一些方法(字符串...参数)

这里你不知道传递参数的数量,以及允许方法调用者传递多个String对象。

这是关于Varargas的官方文档

最后一个参数类型后面的三个句点表示最后一个参数可以作为数组或参数序列传递。Varargs 只能用于最后的参数位置。

于 2013-10-10T04:43:04.413 回答
0

这段代码是如何工作的?我们正在使用 String[] args ,所以我们不应该传递像 new String[]{.....}.. 这样的参数吗?

JVM 创建所有输入的数组并将传递给您的 main 方法。这仅适用于 main 方法,因为它是应用程序的起点,并且此方法由 JVM 调用

那么这种形式和 String...s 形式之间的区别/优势是什么...因为 varargs 用于在 String[] args 中传递零个或多个参数,我们也可以在没有零用户输入的情况下运行它(或java 默认情况下会补充一些参数吗?

可变参数允许您为任何方法获取多个参数。如果您不使用可变参数,那么您的代码工作就是创建一个参数数组并将其传递给接受参数数组的方法。

于 2013-10-10T04:39:16.657 回答