我试图理解Java中的System.out.println()的工作...在以下2个代码片段中,为什么答案不同以及为什么它不打印"你好:" println()方法中的字符串?
public static void main(String[] args) {
String x = "abc";
String y = "abc";
System.out.println("Hello:" + x == y);
System.out.println("x.equals(y): " + x.equals(y));
if(x == y){
System.out.println("Hello:" + x==y);
}
}
答案是:
false
x.equals(y): true
false
第二段代码:
public static void main(String[] args) {
String x = "abc";
String y = "abc";
System.out.println( x == y);
System.out.println("x.equals(y): " + x.equals(y));
if(x == y){
System.out.println(x==y);
}
}
答案是:
true
x.equals(y): true
true
答案 0 :(得分:12)
这归因于operator precedence:app.local/belakang
相当于"Hello:" + x == y
。
因为("Hello:" + x) == y
的优先级高于+
。
答案 1 :(得分:2)
第一个返回false,因为+运算符的优先级高于==运算符,如果更换代码,它也将返回true
System.out.println("Hello:" + (x == y));
你也可以参考这里的==和equals方法的区别 What is the difference between == vs equals() in Java?
因为我也会说同样的。
并且对于运算符优先级,请看这个..
http://introcs.cs.princeton.edu/java/11precedence/