我有一个以字符串形式传递的函数。从那里我用
分割字符串String[] info = s.split("\\s+");
然后我想看看第一个索引是否是加号(+)。如果我输入一个字符串:+其他东西它声称+!= +
System.out.println("Check if "+ info[0]+ " = +");
if(info[0]=="+") {
System.out.println("yes");
} else
System.out.println("no");
这是我得到的输出:
Interp> +
Check if + = +
no
谁知道为什么会这样?
答案 0 :(得分:4)
应该是:
if(info.length > 0 && "+".equals(info[0])) {
答案 1 :(得分:3)
比较String
时,请始终使用String.equals(String str)
。 ==将比较字符串以获得相同的内存标识,String.equals()
将比较相同的内容。
if(info[0].equals("+")) { do stuff.. }
答案 2 :(得分:0)
为了比较两个Strings
,您应该始终使用myString.equals(otherstring);
在你的情况下,这可能是
if(info[0].equalsIgnoreCase("+") {
System.out.println("yes");
} else
System.out.println("no");
}
这些是字符串的可能性:
string1.equals(string2)
- >返回布尔值string1.equalsIgnoreCase(string2)
- >返回布尔值string1.compareTo(string2)
- >返回 -1 如果string1在string2之前按字母顺序返回, 0 如果两个字符串相等, +1 如果string2在string1之前按字母顺序排列解释:==
运算符比较两个字符串的内存引用而不是字符串的内容。