System.out.println("1 + 2 = " + 1 + 2);
输出:12
你能解释一下这是为什么吗?我试图查看一些文档,但没有找到任何东西......答案 0 :(得分:2)
由于+
运算符从左到右工作,它首先将字符串"1 + 2 = "
添加到1
,然后获取"1 + 2 = 1"
,然后将2
添加到"1 + 2 = 12"
得到System.out.println(("1 + 2 = " + 1) + 2);
。
它相当于
System.out.println("1 + 2 = " + (1 + 2));
试试这个。
{{1}}
答案 1 :(得分:1)
由于左侧操作数是String
,因此左侧操作数会被强制转换为String
。
"1 + 2 = " + 1
。结果是字符串"1 + 2 = 1"
。然后下一个操作是"1 + 2 = 1" + 2
。该操作的结果是"1 + 2 = 12"
答案 2 :(得分:0)
运营商+
始终从左到右分组。所以你得到"1 + 2 = " + 1
,(得到"1 + 2 = 1"
),然后最后添加2
,给出"1 + 2 = 12"
。
如果您希望它从右向左分组,则需要使用括号,例如"1 + 2 = " + (1 + 2)
,这样会"1 + 2 = 3"
答案 3 :(得分:0)
这是因为优先权。如果您仅使用+
,则从左到右。首先,创建字符串1 + 2 =
,然后在字符串中添加数字,生成字符串1 + 2 = 1
,然后将下一个int添加到字符串中,生成字符串1 + 2 = 12
。
您可以使用括号"1 + 2 = " + (1 + 2)
答案 4 :(得分:0)
Java编程语言保证运算符的操作数似乎以特定的评估顺序进行评估,即从左到右。
加法运算符具有相同的优先级,并且在语法上是左关联的(它们从左到右分组)。
如果+运算符的任一操作数的类型是String,则该操作是字符串连接。
所以上半部分"1 + 2 = " + 1
是第一个得到评估的部分。因为的前半部分是一个字符串,所以它的计算结果为:"1 + 2 = 1"
。整个表达式现在是"1 + 2 = 1" + 2
。再次,此表达式中的两个操作数之一是String,因此+
操作数连接。然后整个表达式计算为字符串"1 + 2 = 12"
,然后打印出来。