Java命令行参数。 使用*作为乘法的参数

我试图从命令行运行java计算器应用程序。 参数如下:operator operand1 operand2。 我可以为+和 – 成功运行java程序。
例如
java calc + 2 4
java calc – 10 4

但是当我试着奔跑的时候
java * 2 5

System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);

给出输出:
的.classpath
。项目
.settings

我通过反复试验发现使用单引号(’*’)解决了我的问题。 我现在有两个问题。
1.使用单引号是否正确? (java calc’*’2 5)
2.在java命令行中*的含义是什么? (我试图在互联网上找到这个,但没有找到太多帮助)

谢谢,Punit

它不是Java,它是你正在使用的shell( cmd如果你在Windows上)将*解释为“当前目录中的所有文件和文件夹”。

所以当你写:

 java calc * 2 5 

实际上,您将为程序提供以下参数:

 java calc file_1 file_2 ... file_n 2 5 

其中file_1 ... file_n是当前目录中的所有文件(和文件夹)。

如果您不希望shell将*解释为您需要的所有文件(正如您所注意到的那样)来引用该参数。

如果引用命令参数,shell将不会将它们扩展为文件名。 ‘*’对java没有特殊意义,它是处理此输入的shell。