4

在我的示例中,似乎与main(String[] args)我无法弄清楚的其他字符串数组之间存在差异。

public class TestArgs 
{
public static void main(String[] args) {
    String[] x = {"1","2","3"};
    System.out.print( x[2] == "3" );
    System.out.print( args[2] == "3" );
}}

我运行这个程序:

java TestArgs 1 2 3

我希望输出为“truetrue”,但我得到“truefalse”

有人可以告诉我有什么区别,还是我只是在做一些非常愚蠢的事情......

4

3 回答 3

9

在java中,你必须使用"test".equals("test")来测试字符串相等性;)

字符串是对象,对象不相同,它们只是具有相同的 VALUE

于 2012-09-04T03:02:41.823 回答
5

那是因为您在使用==. 比较时String,请使用.equals()而不是==. 这个SO 答案更好地解释了原因。

所以你的代码会变成这样:

public class TestArgs {
    public static void main(String[] args) {
        String[] x = {"1","2","3"};
        System.out.print("3".equals(x[2]);
        System.out.print("3".equals(args[2]));
    }
}

此外,这与这个答案没有直接关系args,在使用它进行任何操作之前检查你的长度总是一个好主意。原因是最终用户可能没有为args[2]

于 2012-09-04T03:03:38.187 回答
2

运算符通过==引用比较对象。

于 2012-09-04T03:02:51.327 回答