What happens if you remove the space between the + and ++ operators?
addition, integer, java, operators, string-concatenation
Solution
Compiler generates longest possible tokens when parsing source, so when it encounters +++, it takes it as ++ +.
So the code of
a +++ b
Will always be same as
(a++) + b
Problem
EDIT 1 DISCLAIMER: I know that `+++` is not really an operator but the `+` and `++` operators without a space. I also know that there's no reason to use this; this question is just out of curiosity. So, I'm interested to see if the space between `+` and `++var` is required in Java. Here is my test code: ``` int i = 0; System.out.println(i); i = i +++i; System.out.println(i); ``` This prints out: ``` 0 1 ``` which works as I would expect, just as if there were a space between the first and second `+`. Then, I tried it with string concatenation: ``` String s1 = "s " + ++i; System.out.println(s1); // String s2 = "s " +++i; ``` This prints out: ``` s 2 ``` But if the third line is uncommented, the code does not compile, with the error: ``` 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; ^ ``` What's causing the difference in behavior between string concatenation and integer addition? EDIT 2 As discussed in Abhijit's follow-up question, the rule that people have mentioned (the larger token ++ be parsed first, before the shorter token ++) is discussed in this presentation where it appears to be called the Munchy Munchy rule.