Java split()检查索引是否等于值

Java split()检查索引是否等于值,java,split,Java,Split,我有一个以字符串形式传递的函数。从这一点上,我用 String[] info = s.split("\\s+"); 然后我想看看第一个索引是否是加号(+)。如果我在字符串中输入:+其他内容,它会声明+!=+ System.out.println("Check if "+ info[0]+ " = +"); if(info[0]=="+") { System.out.println("yes"); } else System.out.println("no"); 这是我得到的输

我有一个以字符串形式传递的函数。从这一点上,我用

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

有人知道这是为什么吗?

在比较
String
s时,始终使用
String.equals(String str)
=将比较字符串是否具有相同的内存标识,
String.equals()
将比较相同的内容


if(info[0].equals(“+”){do stuff..}
要比较两个
字符串
您应该始终使用
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
解释:操作符比较两个字符串的内存引用,而不是字符串的内容。

应该是:

if(info.length > 0 && "+".equals(info[0])) {

.equals()
,而不是
=
。可能是重复的,谢谢!非常详细的解释。