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”
有人可以告诉我有什么区别,或者我只是在做一些非常愚蠢的事情......
答案 0 :(得分:8)
在java中,你必须使用"test".equals("test")
来测试字符串相等性;)
字符串是对象,对象不是SAME,它们只有相同的VALUE
答案 1 :(得分:5)
这是因为您在使用==
时正在比较对象的引用。在进行String
比较时,请使用.equals()
代替==
。这SO answer更好地解释了原因。
所以你的代码会变成这样:
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]
答案 2 :(得分:2)
==
运算符按引用比较对象。