字符串为什么下面的Java语句打印“2+2=22”而不是“2+2=4” 9 月,3 周 Questions & Answers 893 为什么下面的Java语句会打印"2 + 2 = 22" System.out.println("2 + 2 = " + 2 + 2);
# 1 楼答案 看看这个: 15.18.1. String Concatenation Operator + If only one operand expression is of type String, then string conversion (§5.1.11) is performed on the other operand to produce a string at run time. JLS 15.18.1
# 2 楼答案 你必须在这里给出优先顺序。这样一来,具有求和的括号将首先执行,然后执行串联。否则它是从左到右评估的。最左边的文字是String,您将数字连接到String文字,从而得到上面的结果"2 + 2 = 22" System.out.println("2 + 2 = " + (2 + 2));
# 3 楼答案 因为java“+”运算符首先在左边赋值:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html 所以 "2 + 2 = " + 2 + 2 首先评估 "2 + 2 = 2" + 2 然后 "2 + 2 = 22" 如果需要,优先规则可以被显式括号覆盖 "2 + 2 = " + (2 + 2)
# 4 楼答案 如果+的任何一个参数是字符串,那么返回的也是字符串 考虑到这一点,你可以得到: "2 + 2 = " + 2=>"2 + 2 = 2" "2 + 2 = 2" + 2=>"2 + 2 = 22" 如果你想在字符串连接之前进行数学运算,你需要确保它首先发生,正如@Ravindra的答案所示
# 1 楼答案
看看这个:
JLS 15.18.1
# 2 楼答案
你必须在这里给出优先顺序。这样一来,具有求和的括号将首先执行,然后执行串联。否则它是从左到右评估的。最左边的文字是
String
,您将数字连接到String
文字,从而得到上面的结果"2 + 2 = 22"
# 3 楼答案
因为java“+”运算符首先在左边赋值:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
所以
首先评估
然后
如果需要,优先规则可以被显式括号覆盖
# 4 楼答案
如果
+
的任何一个参数是字符串,那么返回的也是字符串考虑到这一点,你可以得到:
"2 + 2 = " + 2
=>"2 + 2 = 2"
"2 + 2 = 2" + 2
=>"2 + 2 = 22"
如果你想在字符串连接之前进行数学运算,你需要确保它首先发生,正如@Ravindra的答案所示