首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中+ (plus)运算符的优先级是多少?

问Java中+ (plus)运算符的优先级是多少?
EN

Stack Overflow用户
提问于 2013-11-15 07:44:20
回答 4查看 495关注 0票数 2

加号运算符的优先级只在java教程优先级表中列出一次。但是,以下Java表达式:

代码语言:javascript
复制
String unexpected = "1 + 1 = " + 1 + 1; 
String expected   = "1 + 1 = " + (1 + 1);
System.out.println(unexpected);
System.out.println(expected);

其结果是:

代码语言:javascript
复制
1 + 1 = 11
1 + 1 = 2

这是否意味着加号运算符在连接字符串时具有更高的优先级,还是意味着加号运算符的优先级对于字符串和数字没有什么不同,而是简单地从左到右求值?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-15 07:59:19

+总是从左到右流动

在第一个示例String unexpected = "1 + 1 = " + 1 + 1;中,string首先出现,然后int值so 1被视为string。

在第二个示例operator.(BODMAS)中,您使用的是比+ String expected = "1 + 1 = " + (1 + 1);具有更高优先级的()

考虑另一个例子:

代码语言:javascript
复制
String unexpected1 =1+1+ "1 + 1 = " ;
 System.out.println(unexpected1);

输出为21 + 1 =

在这里,int值首先得到1+1 = 2,然后字符串SO2与1+1=连接

票数 1
EN

Stack Overflow用户

发布于 2013-11-15 07:46:12

这意味着它是从左到右评估。

票数 8
EN

Stack Overflow用户

发布于 2013-11-15 07:58:25

来自jls SE8 15.18.1字符串连接运算符+: +运算符在语法上是左联想的,不管它是由类型分析确定的,以表示字符串级联或数值相加。在某些情况下,需要小心才能得到预期的结果。例如,表达式:

代码语言:javascript
复制
a + b + c

总是被认为是意义:(a + b) + c

因此,表达式的结果是:1 + 2 + " fiddlers"

is:"3 fiddlers"

但结果是:"fiddlers " + 1 + 2

is:"fiddlers 12"

另一个例子:1 + 1 + "" + 1 + 1

将导致:211

这就是为什么,对于您的上下文"1 + 1 = " + 1 + 1;

将导致字符串1 + 1 = 11。

但是,"1 + 1 = " + (1 + 1);会导致1 + 1 = 2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19995956

复制
相关文章

相似问题

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