0

我有一个以字符串形式传递的函数。从那我分割字符串

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

有谁知道这是为什么?

4

3 回答 3

4

它应该是:

if(info.length > 0 && "+".equals(info[0])) {
于 2013-03-26T22:44:19.733 回答
3

比较Strings 时,始终使用String.equals(String str). == 将比较字符串以获得相同的内存标识,String.equals()将比较相同的内容。

if(info[0].equals("+")) { do stuff.. }

于 2013-03-26T22:44:14.917 回答
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)->如果 string1 按字母顺序排在 string2 之前,则返回-1 ,如果两个字符串相等则返回0 ,如果 string2 按字母顺序排在 string1 之前,则返回+1

解释:==运算符比较两个字符串的内存引用而不是字符串的内容。

于 2013-03-26T22:44:18.557 回答