EDIT 1Cosa succede se si rimuove lo spazio tra gli operatori + e ++?
NOTA BENE: So che+++
non è davvero un operatore ma i +
e ++
operatori senza uno spazio. So anche che non c'è motivo di usarlo; questa domanda è solo per curiosità.
così, sono curioso di vedere se è necessario lo spazio tra +
e ++var
in Java.
Ecco il mio codice di prova:
int i = 0;
System.out.println(i);
i = i +++i;
System.out.println(i);
Questo stampa:
0
1
che funziona come mi sarei aspettato, proprio come se ci fosse uno spazio tra la prima e la seconda +
.
Poi, ho provato con la concatenazione di stringhe:
String s1 = "s " + ++i;
System.out.println(s1);
// String s2 = "s " +++i;
Questo stampa:
s 2
Ma se la terza linea non sia commentata, il codice non si compila, con l'errore:
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;
^
Che cosa sta causando la differenza di comportamento tra la concatenazione di stringhe e l'aggiunta di numeri interi ition?
EDIT 2
Come discusso nel Abhijit's follow-up question, la regola che la gente ha detto (il token più grande ++ essere analizzato prima, prima che il token ++ più breve) è discusso in this presentation in cui appare per essere chiamata la regola di Munchy Munchy.
E simmilary i = i +++++ i; NON è valido ma i = i ++ + ++ i; È. – Jayamohan
Dato che non è un operatore, chiedersi come funziona non ha senso. Non è una vera domanda. – EJP
Domanda di followup [Is '+++' è solo un incremento post-fix seguito da un infisso (sempre)?] (Http://stackoverflow.com/q/15382171/977038) – Abhijit