编辑 1
免责声明:我知道这 +++
不是真正的运算符,而是没有空格的+
and运算符。++
我也知道没有理由使用它;这个问题只是出于好奇。
所以,我很想看看Java中是否需要+
和之间的空间。++var
这是我的测试代码:
int i = 0;
System.out.println(i);
i = i +++i;
System.out.println(i);
这打印出来:
0
1
正如我所期望的那样工作,就像 first 和 second 之间有一个空格一样+
。
然后,我尝试了字符串连接:
String s1 = "s " + ++i;
System.out.println(s1);
// String s2 = "s " +++i;
这打印出来:
s 2
但是如果第三行没有注释,代码就无法编译,报错:
Problem3.java:13: unexpected type
required: variable
found : value
String s2 = "s " +++i;
^
Problem3.java:13: operator + cannot be applied to <any>,int
String s2 = "s " +++i;
^
是什么导致字符串连接和整数加法之间的行为差异?
编辑 2
正如Abhijit 的后续问题中所讨论的,人们提到的规则(首先解析较大的标记 ++,在较短的标记 ++ 之前)在本演示文稿中进行了讨论,它似乎被称为 Munchy Munchy 规则。