为什么在第二种情况下不允许字符串连接?

时间:2017-06-10 11:54:54

标签: java

第二种情况给出了编译错误,显示5是字符串,而4是int。这应该是第一种情况也是如此,但它给出了输出。为什么????

<property>

2 个答案:

答案 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"