Может ли соответствие Java Compiler оптимизировать этот код?JAVA

Программисты JAVA общаются здесь
Anonymous
Может ли соответствие Java Compiler оптимизировать этот код?

Сообщение Anonymous »

Я преподавал вводный курс программирования сегодня и проходил какой -то простой код, включающий задание переменных в Java. Смысл кода не стал демонстрировать что -либо конкретное захватывающее, но в основном, чтобы убедиться, что студенты понимают операторы назначения переменных. и проходил через это по одной строке за раз: < /p>

Код: Выделить всё

private void simpleMethod() {
int myInt = 137;
myInt = 42;
myInt = myInt + 1;

/* ... code using myInt ... */
}
< /code>

Студент спросил меня, будет ли Myint < /code> когда -либо на самом деле значения 137 и 42, когда программа запускается, или она просто прыгнет прямо к удержанию 43. Я сказал студенту, что код выполнит каждую строку по очереди, поэтому переменная фактически будет иметь эти промежуточные значения. Javac 
испускает (полностью игнорируя оптимизации, сделанные JVM). Является ли javac (или любой Java Compiler) юридически разрешено оптимизировать глупые операторы назначения и вместо этого просто напрямую инициализировать Myint до 43?

Согласно Javap , в моей системе приведенный выше код, скомпилированный с 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>

Таким образом, здесь нет оптимизации. Мой вопрос, однако, заключается в том, является ли это законным оптимизировать это или нет, так что это ничего не разрешает.

Подробнее здесь: https://stackoverflow.com/questions/143 ... -this-code

Вернуться в «JAVA»