第二种情况给出了编译错误,显示5是字符串,而4是int.This应该也是第一种情况,但它给出了output.Why?
class Test
{
public static void main(String args[])
{
System.out.println("The sum is: "+5*4); //Gives output The sum is: 20
System.out.println("The sum is: "+5-4);
//Gives compilation error shows 5 is string while 4 is int.This should be the case with prevous case also but it gives output.Why????
}
}发布于 2017-06-10 19:57:37
operator precedence的Java规则指出,*比+绑定得更紧密,但-并非如此。
这意味着第一个表达式与计算结果为"The sum is: 20"的"The sum is: " + (5 * 4)相同。然而,第二个表达式与("The sum is: " + 5) - 4相同,没有任何意义-您不能从String中减去一个数字。
发布于 2017-06-10 20:06:10
"The sum is: "+5*4包含优先级高于+的*。因此,首先评估5*4。然后,连接隐式地将int结果转换为String。
"The sum is: "+5-4在这种情况下,+和-具有相同的优先级。因此,整个表达式从左到右求值。连接还隐式地将5转换为String。下一个操作失败,因为您无法从String中减去int。为了强制执行正确的计算,请使用括号。
注意,如果我们先做减法,这是可行的:
5-4+" is the sum"https://stackoverflow.com/questions/44473032
复制相似问题