EDIT 1
免责声明:我知道 +++
并不是真正的运算符,而是没有空格的+
和++
运算符。我也知道没有理由使用这个;这个问题只是出于好奇。
因此,我想知道在Java中+
和++var
之间是否需要空格。
这是我的测试代码:
int i = 0;
System.out.println(i);
i = i +++i;
System.out.println(i);
这将打印出以下内容:
0
1
这段代码的效果和我预期的一样,就好像在第一个和第二个+
之间有一个空格一样。
接下来,我尝试使用字符串拼接:
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”规则。
+++
是否只是一个后缀自增跟着一个中缀操作符(总是)? - Abhijit