public class Main {
public static void main(String[] args) {
String str1 = new String("Haseeb");
String str2 = new String("Haseeb");
System.out.println("str1==str2" + str1==str2 );
}
}
答案 0 :(得分:12)
==
运算符is of lower precedence而不是+
,因此+
首先执行。
"str1==str2" + str1
会产生"str1==str2Haseeb"
。
然后执行==
,"str1==str2Haseeb"
与"Haseeb"
(str2
)不是同一个对象,因此会打印false
。
您可以添加括号以阐明所需的操作顺序。
System.out.println("str1==str2 " + (str1==str2) );
这应该打印str1==str2 false
。
答案 1 :(得分:4)
(a + b == c)
评估为(a + b) == c
,而不是a + (b==c)
,因为+
的优先级高于==
。算术运算不会起作用。
你所拥有的相当于:
System.out.println( ("str1==str2" + str1) ==str2 );
且("str1==str2" + str1)
不等于str2
,因此您打印false
。
你的意思是:
System.out.println("str1==str2 " + (str1==str2));