在同一示例中使用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解释吗?我糊涂了 !
答案 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上测试过。