ich folgenden Code geschrieben habe, den gegebenen String zu umkehren:Wie Post Increment ++ Operator arbeitet, während der Initialisierung
String str = "abcdef";
char[] strToChar = str.toCharArray();
char[] outString = new char[strToChar.length];
for(int j = 0; j < strToChar.length;) {
int len = strToChar.length-j;
outString[j++] = strToChar[strToChar.length-j];
}
Gemäß meinem Verständnis Initialisierung von Recht-links passiert. Daher sollte strToChar[strToChar.length-j]
hier ArrayIndexOutOfBoundException
werfen.
Aber es läuft gut. Wie ist das passiert? Sollte es das nicht bewerten?
outString[0] = strToChar[6]; //This should throw exception
gut ordnen Sie 'OutString [0] = strToChar [6- 1] 'hier, was zu keinem Fehler führen wird. Der Schlüssel hier ist 'j ++', was dazu führt, dass der rechte Teil keine Ausnahme auslöst, da die linke Zuweisungsvariable den 'j' Wert aufgrund der Postinkrementierung erhöht. – SomeJavaGuy
Die [JLS] (https://docs.oracle "Die Java - Programmiersprache garantiert, dass die Operanden von Operatoren in einer bestimmten Bewertungsreihenfolge ausgewertet zu werden scheinen, nämlich von _left" (http://javas.com/specs/jls/se8/html/jls-15.html # jls-15.7) nach rechts_." – Thomas