Java String Concatenation在concat 1 + 1 +"equals"+ 1 + 1上输出为2等于11

Nav*_*Ali 0 java string string-concatenation

我在java中编写代码并输出为2 equals 11.My代码是

public class StringPrct 
{
public static void main(String[]args)
{
String s= 1+1+" equals "+1 +1;
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是为什么我没有得到输出2 equals 2.

ysh*_*vit 6

+经营者具有相同的优先级无论是添加或串联,和同事左到右.所以:

1 + 1 + " equals " + 1 + 1
Run Code Online (Sandbox Code Playgroud)

评估为

(((1 + 1) + " equals ") + 1) + 1
((2 + " equals ") + 1) + 1
("2 equals " + 1) + 1
"2 equals 1" + 1
"2 equals 11"
Run Code Online (Sandbox Code Playgroud)

如果要覆盖它,则需要提供括号:

1 + 1 + " equals " + (1 + 1)
Run Code Online (Sandbox Code Playgroud)

这变为:

((1 + 1) + " equals ") + (1 + 1)
(2 + " equals ") + (1 + 1)
"2 equals " + (1 + 1)
"2 equals " + 2
"2 equals 2"
Run Code Online (Sandbox Code Playgroud)

为清楚起见,您可能应该将括号添加到第一个括号中1 + 1,以便读取您的代码的人不必进行添加括号和评估的心理练习:

(1 + 1) + " equals " + (1 + 1)
Run Code Online (Sandbox Code Playgroud)


小智 5

1 + 1是整数(2)

2 + " equals "被转换为String(2 equals)

"2 equals " + 1是String(2 equals 1)

"2 equals 1" + 1是String(2 equals 11)

它应该是 (1 + 1) + " equals " + (1 + 1)