Code: Select all
private void simpleMethod() {
int myInt = 137;
myInt = 42;
myInt = myInt + 1;
/* ... code using myInt ... */
}
< /code>
Ein Student fragte mich, ob MyInt < /code> die Werte 137 und 42 jemals halten würde, wenn das Programm lief, oder ob es einfach direkt zu 43 hält. Ich sagte dem Schüler, dass der Code nacheinander jede Zeile ausführen würde, sodass die Variable diese Zwischenwerte tatsächlich halten würde. Javac
initialisieren Laut Javap erzeugt der obige Code mit Javac
0: sipush 137
3: istore_1
4: bipush 42
6: istore_1
7: iload_1
8: iconst_1
9: iadd
10: istore_1
11: return
< /code>
Es gibt also keine Optimierung hier. Meine Frage ist jedoch, ob es legal ist, dies zu optimieren oder nicht, sodass dies nichts löst.