为什么System.out.println()不打印字符串

时间:2014-11-07 23:28:25

标签: java

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  );
    }
}
  • 输出为" false"
  • 我期待" str1 == str2 false"

2 个答案:

答案 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));