Java论证的奇怪行为*

时间:2012-01-11 11:17:25

标签: java

我写了这堂课:

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

javac ListArg.java //编译类

我编译了上面的类并运行如下: java ListArg *

但ListArg在控制台上显示当前目录内容而不是“*”。

5 个答案:

答案 0 :(得分:4)

编辑:看起来我错了,毕竟这可能是Java。如果您正在使用Unix shell,这可能只是执行&#34; globbing&#34;的shell。但是,它似乎在Windows上做同样的事情,这让我感到惊讶(因为Windows命令行默认情况下不执行通配)。

不幸的是,在Windows上,正常的引用似乎会给你一个引用的参数,即如果你打印args[0]已经运行

java ListArg '*'

它将包含单引号。我正在调查是否有一种禁用此方法的方法......虽然这可以在Unix shell上运行。

编辑:嗯...到目前为止,在Windows中设置一串只是一颗星的时候没有运气:(

答案 1 :(得分:2)

你应该用引号包装*: java ListArg '*'java ListArg "*"

答案 2 :(得分:1)

这是你的shell(除非你在Windows上)扩展*。尝试通过将其放在引号中来避免它,例如“*”。

对于我在Windows XP上使用双引号工作,“*”作为参数给出java程序*作为参数(没有双引号和没有扩展)。也许这与其他Window版本不同。

答案 3 :(得分:1)

用双引号给出命令行参数并检查。

答案 4 :(得分:0)

*wildcard字符,由终端

预处理

*类似,您可以使用

  • *.*
  • *.txt。这将列出.txt结尾的文件和文件夹

等,你可以试试

link提供有关这些内容的信息。

它不仅适用于Linux,也适用于Windows。