【发布时间】:2014-02-05 18:30:54
【问题描述】:
我肯定错过了什么
public static void main(String []args){
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);//gives true
}
public static void main(String []args){
String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2 is:" + s1 == s2); //gives false
}
与运算符优先级有关??
【问题讨论】:
-
附带说明,不要将字符串与
==进行比较,请使用equals(String)或equalsIgnoreCase(String) -
虽然在这种情况下,如果您添加括号,它会按预期工作,因为您正在比较字符串常量(JLS 保证为
==if他们是equals)。 -
请注意那些回答“不要使用
==来比较字符串”的人:看起来这似乎是预期的行为,是对 Java 中(内部)字符串常量的调查。
标签: java