Was genau da rauskommt, kann man nur beantworten, wenn man sich den Bytecode ansieht, den der Just-In-Tme-Compiler ausspuckt - im speziellen weiß man nicht, wie "intelligent" er dabei ist, zu erkennen, ob der Wert sich ändern kann. Auf der sicheren Seite ist man, wenn man hinschreibt, was man machen will. Wenn man sowas hat wie
for (int i=0; i<computeSomeNumber(); i++) { .... }
sollte man davon ausgehen, dass die Methode immer aufgerufen wird, und WENN man (als Programmierer) WEISS, dass sich der Wert nicht ändert, sowas machen wie
int n = computeSomeNumber();
for (int i=0; i<n; i++) { .... }