Java中的基础初学者:Java中的"参数"意味着什么

use*_*921 6 java arguments

我在过去2天一直在努力学习基本的java编程,我在查看以下代码时遇到了一个我无法想象的问题:

class DayCounter {
    public static void main(String[] arguments) {

        int yearIn = 2008;
        int monthIn = 1;
        if (arguments.length > 0)
            monthIn = Integer.parseInt(arguments[0]);
        if (arguments.length > 1)
            yearIn = Integer.parseInt(arguments[1]);
        System.out.println(monthIn + "/" + yearIn + " has "
            + countDays(monthIn, yearIn) + " days.");
    }
}
Run Code Online (Sandbox Code Playgroud)

我无法理解这条线if (arguments.length > 0) 是什么arguments意思?价值来自哪里?

Jon*_*eet 8

我无法理解"if(arguments.length> 0)"是什么意思"参数"是什么意思?它的价值来自哪里?

它来自方法声明:

public static void main(String[] arguments) {
Run Code Online (Sandbox Code Playgroud)

这声明了一个名为的参数arguments.对于普通方法调用,调用者指定参数,并且该参数成为参数的初始值.例如:

int foo(int x) {
    System.out.println(x);
}
...
foo(10);
Run Code Online (Sandbox Code Playgroud)

这里,10是方法的参数,因此它是x参数的初始值.

现在,main在Java中调用的公共静态void方法是一个入口点 - 所以当你运行时:

java MyClass x y z
Run Code Online (Sandbox Code Playgroud)

JVM main使用包含命令行参数的数组调用您的方法- 这里,它将是一个长度为3的数组,其值为"x","y"和"z".

有关更多详细信息,请参阅Java教程的相关位:


dng*_*fng 1

Arguments 是可以在启动时传递给 Java 程序的参数列表。

if (arguments.length > 0) 检查是否已提供任何参数。

否则,您将尝试访问空数组并获取和索引越界异常。

此外,还有大量的教程可以为您提供帮助。

查看Oracle 的要点指南,此处有关 CMD 行参数