不想废话,直接上代码
TestJavap.java
public class TestJavap {
public static void main(String[] args){
int i = 0;
i = i++;
System.out.println(i);
}
}
编译
> javac TestJavap.java
得到 TestJavap.class
public class TestJavap {
public TestJavap() {
}
public static void main(String[] var0) {
byte var1 = 0;
byte var10000 = var1;
int var2 = var1 + 1;
var1 = var10000;
System.out.println(var1);
}
}
利用javap查看运行逻辑
> javap -c TestJavap.class
输出
Compiled from "TestJavap.java"
public class TestJavap {
public TestJavap();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0 // 将0放入栈顶
1: istore_1 // 将栈顶值放到变量1中
2: iload_1 // 将变量1放入栈顶
3: iinc 1, 1 // 变量1的值+1
6: istore_1 // 将栈顶值放到变量中
7: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
10: iload_1
11: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
14: return
}
上面程序运行输出
0
博客
欢迎关注我的个人微信订阅号:(据说这个头像程序猿专用)