首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在第二种情况下不允许字符串连接?

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

Stack Overflow用户
提问于 2017-06-10 19:54:54
回答 2查看 38关注 0票数 1

第二种情况给出了编译错误,显示5是字符串,而4是int.This应该也是第一种情况,但它给出了output.Why?

代码语言:javascript
复制
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????
    }
    }
EN

回答 2

Stack Overflow用户

发布于 2017-06-10 19:57:37

operator precedence的Java规则指出,*+绑定得更紧密,但-并非如此。

这意味着第一个表达式与计算结果为"The sum is: 20""The sum is: " + (5 * 4)相同。然而,第二个表达式与("The sum is: " + 5) - 4相同,没有任何意义-您不能从String中减去一个数字。

票数 2
EN

Stack Overflow用户

发布于 2017-06-10 20:06:10

代码语言:javascript
复制
"The sum is: "+5*4

包含优先级高于+*。因此,首先评估5*4。然后,连接隐式地将int结果转换为String

代码语言:javascript
复制
"The sum is: "+5-4

在这种情况下,+-具有相同的优先级。因此,整个表达式从左到右求值。连接还隐式地将5转换为String。下一个操作失败,因为您无法从String中减去int。为了强制执行正确的计算,请使用括号。

注意,如果我们先做减法,这是可行的:

代码语言:javascript
复制
5-4+" is the sum"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44473032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档