Попробовав простую программу (используя как 0, так и 100, чтобы показать разницу между «специальными» константами и общими), компилятор Sun Java 6 выдаст тот же байт-код для 1 и 2 (случаи 3 и 4 идентичны [2]
Так, например:
double x = 100;
double y = 100.0;
компилируется в:
0: ldc2_w #2; //double 100.0d
3: dstore_1
4: ldc2_w #2; //double 100.0d
7: dstore_3
Однако я могу " t увидеть что-либо в Спецификации языка Java , гарантируя это расширение времени с постоянным выражением. Время компиляции сужается для таких случаев, как:
byte b = 100;
, как указано в разделе 5.2 , но это не совсем то же самое.
Возможно, кто-то с более острыми глазами, чем я, может найти там какую-то гарант ...
Как объяснено в той же документации, если вы включите опцию --cached
, она удалит только из индекса, а если вы не включите, удалит оба.