Java和C#以不同的方式解释乘法*符号,为什么?

时间:2017-03-07 09:18:05

标签: java cmd

在同一示例中使用Java和c#给出不同的结果 Java中的代码:

public static void main(String[] args) 
{
    for(int i = 0; i < args.length; i++)
    {
        System.out.println(args[i]);
    }
}

这是我的java和类文件所在的内容文件夹:
Folder Content

如果我通过CMD使用此代码,那很好:

java FileC 2 - 3

或者

java FileC 2 + 3


结果很好:
2
-
3



2
+
3

如果我使用:

java FileC 2 * 3

结果是:
2
FileB.css
FileC.class
FileC.java
FileD.txt
FileE.eml
folderA
3

但它应该是印刷:
2
*
3

如果我使用它:

java FileC 2 "*" 3

工作正常我得到:
2
*
3

正如这里所解释的那样,答案说*标志已经扩展:The issue of * in Command line argument

但是当我在c#中使用相同的代码块并以与我的java“myApp 2 * 3”相同的方式运行它时它工作正常,这次不需要引号,所以它真的是shell / cmd解释吗?我糊涂了 !

2 个答案:

答案 0 :(得分:1)

由于这个&#34;功能&#34;:https://bugs.openjdk.java.net/browse/JDK-8131329

,*正在被jvm全局化

答案 1 :(得分:0)

在C#中,您启动我们的应用程序,在java中,您使用您的类名作为参数启动java。

本课

public class Sample {
    public static void main(String[] args) {
        System.out.println(args[1]);
    }
}

在命令行中使用时:

java Sample *

然后它回应我(我在Intellij Idea项目中使用它):

.idea

此行为是特定于java的,因为对于python脚本:

import sys
print sys.argv[1]

当我启动时

python main.py *

然后它回复了我*

已在Windows 8上测试过。