*java的主要args列表中的含义是什么?

Dav*_*vid 11 java

我写了一个这样的类并命名它Solution.java.

public class Solution {
    public static void main(String[] args) {
        System.out.println(args.length);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在终端中运行它时,我得到了这样的结果:

>  /Users/WangWei  java Solution *
18
>  /Users/WangWei
Run Code Online (Sandbox Code Playgroud)

为什么18?

Dan*_* S. 21

这可能是工作目录中的文件数量.

结果*不是特定于Java.它特定于您正在使用的环境,即工作目录和用于运行java命令的shell类型(Windows命令提示符,bash,...).这是因为shell在启动进程之前处理并评估命令行.它取代了*.

要保留*作为命令行参数,您需要引用它:

java Solution '*'
Run Code Online (Sandbox Code Playgroud)


Rei*_*eus 7

你的shell正在解释当前文件夹的内容 - 传入了18个文件.使用单引号来避免解释星号

java Solution '*'
Run Code Online (Sandbox Code Playgroud)