第二种情况给出了编译错误,显示5是字符串,而4是int。这应该是第一种情况也是如此,但它给出了输出。为什么????
<property>
答案 0 :(得分:2)
operator precedence的Java规则声明*
比+
绑定得更紧,但-
没有。{/ p>
这意味着第一个表达式与"The sum is: " + (5 * 4)
相同,后者的计算结果为"The sum is: 20"
。但是,第二个表达式与("The sum is: " + 5) - 4
相同,没有任何意义 - 您无法从String
中减去一个数字。
答案 1 :(得分:0)
"The sum is: "+5*4
包含*
,其优先级高于+
。因此,首先评估5*4
。然后,连接会隐式将int
结果转换为String
。
"The sum is: "+5-4
在这种情况下,+
和-
都具有相同的优先级。因此,从左到右评估整个表达。连接还隐式将5
转换为String
。下一个操作失败,因为您无法从int
中减去String
。为了执行正确的评估,请使用括号。
请注意,如果我们首先进行减法,则可以使用:
5-4+" is the sum"