01: package test; 02: 03: public class NumberConstantTest { 04: public static void main(String[] args) { 05: int a = 1 // number or hours 06: * 60 // mins per hour 07: * 1000; // milliseconds per second 08: float b = (3.5f + 1.2f) / 2f; 09: double c = a * (1d / 3d); 10: System.out.println(a); 11: System.out.println(b); 12: System.out.println(c); 13: } 14: } 15:
Explicacion
05-07: Un ejemplo de como definir el numero de segundos en una hora (60000), teniendo la posibilidad de definir el numero de horas, cuando sea necesario.
08-08: Realizando una operacion con punto flotante.
09-09: Ejemplo de una combinacion de constantes, con variables.
Compiled from "NumberConstantTest.java" public class test.NumberConstantTest extends java.lang.Object{ public test.NumberConstantTest(); Code: 0: aload_0 1: invokespecial #8; //Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: ldc #16; //int 60000 2: istore_1 3: ldc #17; //float 2.35f 5: fstore_2 6: iload_1 7: i2d 8: ldc2_w #18; //double 0.3333333333333333d 11: dmul 12: dstore_3 13: getstatic #20; //Field java/lang/System.out:Ljava/io/PrintStream; 16: iload_1 17: invokevirtual #26; //Method java/io/PrintStream.println:(I)V 20: getstatic #20; //Field java/lang/System.out:Ljava/io/PrintStream; 23: fload_2 24: invokevirtual #32; //Method java/io/PrintStream.println:(F)V 27: getstatic #20; //Field java/lang/System.out:Ljava/io/PrintStream; 30: dload_3 31: invokevirtual #35; //Method java/io/PrintStream.println:(D)V 34: return }
Explicacion
- En codigo resultante, despues de ejecutar la decompilacion, utilizando el comando "javap -c" se puede apreciar que el compilador calculo los valores y coloco los resultados donde aplica, sin embargo, cuando se trata de combinaciones de constantes, con variables (incluso siendo constantes), no se optimizas y se realiza la operacion.