繁体   English   中英

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

[英]Why System.out.println() doesn't print the string

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”

==运算符的优先级低于+ ,因此+首先执行。

"str1==str2" + str1产生"str1==str2Haseeb"

然后==执行,并且"str1==str2Haseeb""Haseeb"str2 )不是同一对象,因此打印false

您可以添加括号以阐明所需的操作顺序。

System.out.println("str1==str2 " + (str1==str2)  );

这应该显示str1==str2 false

(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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM