for (int i = 0; i< expArray.length; i++){
System.out.println(expArray[i]);
if ( expArray[i] == "5" ){ ///WHY IS THIS NOT WORKING!!!??
System.out.println("here");
我知道System.out...
的输出:
0
=
0
+
5
这就是我的String
数组的制作方式:
for (int i = 0; i< expArray.length; i++){
if(varTable.get(expArray[i]) != null){
expArray[i] = Integer.toString((int) varTable.get(expArray[i]));
}
}
所以问题是,在expArray[i] == "5" )
if block up top它不在i=1
所在的位置。任何理由/想法?
答案 0 :(得分:5)
如果您有常量
,请使用nullsafe检查if("5".equals(expArray[i]))
答案 1 :(得分:4)
Use .equals() instead of == for String comparison!
==比较两个引用是否指向同一个对象,而不是你的情况。 .equals()检查实际的String内容。
有关字符串比较的详细说明,请查看此SO answer。
答案 2 :(得分:3)
应使用equals
代替==
if(expArray[i].equals("5"))
答案 3 :(得分:2)
==
不适合比较字符串(任何对象,除非你知道它们是规范的)。 ==
只是比较对象引用。 .equals()测试相等性。对于Strings,它们通常都是相同的,但是你发现它们并不能保证。
在Java中,新手遇到的最常见错误之一是使用==
来比较字符串。您必须记住,==
比较对象引用,而不是内容。
所以,使用if(expArray[i].equals("5")
)
答案 4 :(得分:1)
DO NOT COMPARE String
使用==