class Condition{
public static void main(String[] args) {
int i =10;
if(i==10){
System.out.println("low");
}
else{
System.out.println("high");
}
}
}
上面给出了示例程序:
下面的字节码:
0: bipush 10
2: istore_1
3: iload_1
4: bipush 10
6: if_icmpne 20
9: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
12: ldc #3 // String low
14: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
17: goto 28
20: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
23: ldc #5 // String high
25: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: return
我不了解字节码的整体工作原理 指示如何工作
答案 0 :(得分:1)
if_icmpne 20
的意思是:比较(cmp
)操作数上的两个int
值(i
)堆栈,如果(if
不相等(ne
)转到偏移量20 ({{1 }})。参见if_icmp。
20
的意思是:转到(goto 28
)字节码,偏移量为28 (goto
)。参见goto。
要查看所有字节码指令的描述,请参见The Java® Virtual Machine Specification的第6章。