Cuando ejecuto javap en una aplicación HelloWorld muy simple, tengo cierta confusión en la salida alrededor del conjunto constante.Comprender la salida de javap para el conjunto constante
Código de prueba
public class TestClass {
public static void main(String[] args) {
System.out.println("hello world");
}
}
javap -c salida -verbose (cortado con tijeras)
// Header + consts 1..22 snipped
const #22 = String #23; // hello world
const #23 = Asciz hello world;
public static void main(java.lang.String[]);
Signature: ([Ljava/lang/String;)V
Code:
Stack=2, Locals=1, Args_size=1
0: getstatic #16; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #22; //String hello world
5: invokevirtual #24; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
// Debug info snipped
}
Ok, por lo que en la línea 3 vemos un empuje de la "hola mundo" constante en la pila a través del # 22, pero const # 23 parece contener el valor real. Supongo que estoy un poco confundido con lo que el # (número) significa cuando aparece en el lado derecho de la copia impresa.
Oracle/Sun's man page for javap deja mucho que desear.
como 'jdk-7' (http://bugs.sun.com/view_bug.do?bug_id=6868539) es' utf8' y no 'asciz' – Eugene