为什么Java中的以下语句打印"2 + 2 = 22"而不是"2 + 2 = 4"

Pra*_*hor -3 java string

为什么在Java中打印下面的语句 "2 + 2 = 22"

System.out.println("2 + 2 = " + 2 + 2);
Run Code Online (Sandbox Code Playgroud)

Pie*_*rre 9

因为java'+'运算符首先在左侧分配:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html

所以

"2 + 2 = " + 2 + 2
Run Code Online (Sandbox Code Playgroud)

首先评估为

 "2 + 2 = 2" + 2
Run Code Online (Sandbox Code Playgroud)

然后

 "2 + 2 = 22"
Run Code Online (Sandbox Code Playgroud)

您想要的显式括号可以覆盖优先级规则

"2 + 2 = " + (2 + 2)
Run Code Online (Sandbox Code Playgroud)


Rav*_*ala 5

你必须在这里给出优先顺序.这样,首先执行具有求和的括号,然后执行连接.否则它从左到右进行评估.最左边的文字是a String,你将你的数字连接到String导致上述结果的文字"2 + 2 = 22".

System.out.println("2 + 2 = " + (2 + 2));
Run Code Online (Sandbox Code Playgroud)