实例一
运算符 + 与运算符 == 的优先级比较
public class Test {
public static void main(String[] args) {
String s1 = "ok";
String s2 = "ok";
System.out.println("s1 == s2 is:" + s1 == s2);
}
}
上面这段代码的执行结果为
false
因为 我们先执行的是
"s1 == s2 is:" + s1这段逻辑使整个字符串变为"s1 == s2 is:ok"
下一步"s1 == s2 is:ok" == s2即变为"s1 == s2 is:ok" == "ok"
由于 ==
运算符在比较字符串时比较的是引用而不是内容,所以这个比较的结果会是 false
。这个结果并不相等输出即为false
那么如何实现正确的比较呢
正确的写法应该是使用 equals
方法来比较字符串的内容:
System.out.println("s1 == s2 is:" + (s1.equals(s2)));
或者使用 ==
运算符来比较引用:
System.out.println("s1 == s2 is:" + (s1 == s2));
由于 s1
和 s2
引用的是同一个字符串对象,所以 s1 == s2
的结果会是 true
。