EDIT 1Что произойдет, если вы удалите пробел между операторами + и ++?
ОТКАЗ: Я знаю, что+++
это на самом деле не оператор но +
и ++
операторы без пространства. Я также знаю, что нет причин использовать это; этот вопрос просто из любопытства.
Итак, я заинтересован, чтобы увидеть, если пространство между +
и ++var
требуется в Java.
Вот мой тестовый код:
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;
^
Что вызывает разницу в поведении между конкатенацией строк и целым числом ition?
РЕДАКТИРОВАТЬ 2
Как обсуждалось в Abhijit's follow-up question, правило, что люди уже упоминали (чем больше маркер ++ быть разобран сначала, перед тем короче маркер ++), обсуждается в this presentation где он появляется называться Munchy Munchy.
И simmilary я = я +++++ I; НЕВОЗМОЖНО, но i = i ++ + ++ i; ЯВЛЯЕТСЯ. – Jayamohan
Поскольку это не оператор, вопрос о том, как это работает, не имеет смысла. Не настоящий вопрос. – EJP
Последующий вопрос [Является ли '+++' его просто пошаговым приращением, за которым следует инфикс (всегда)?] (Http://stackoverflow.com/q/15382171/977038) – Abhijit