使用“ ==”比较字符串

时间:2019-02-22 06:15:15

标签: java string

String s5="Ram";
String s6="Ram";

System.out.println("  s5==s6  is " + s5==s6);  // false
System.out.println(s5==s6);  // true

为什么第一行总是false而第二行总是true

1 个答案:

答案 0 :(得分:4)

因为+的优先级高于==

" s5==s6 is "+s5==s6

评估为

" s5==s6 is Ram"=="Ram"

这显然是错误的。您可以通过使用括号来避免此特定问题:

" s5==s6 is "+(s5==s6)

同时

s5==s6

评估为

"Ram"=="Ram"

这是真的,只是因为Java中字符串文字的自动中间化。如果对这些字符串之一进行评估而不是对文字进行评估,那将是错误的,因为==将比较对象标识,并且即使两个不同的String对象具有相同的内容,也将被评估为不同。比较

String s5 = new String("Ram");
String s6 = new String("Ram");
System.out.println(s5==s6); //false

使用.equals对字符串内容进行有意义的比较:

System.out.println(s5.equals(s6)); //true