目录
一:起因:以下代码为什么打印值为0?
int i = 0;
int j = i++;
System.out.println(j); // 打印值 0
int i = 0;
int j = ++i;
System.out.println(j); // 打印值 1
二:分析什么原因呢?
那么直接看i++的操作指令吧;
0: iconst_0 //将int类型常量0压入栈
1: istore_1 // 将int类型值存入局部变量1
2: iload_1 //从局部变量1中装载int类型值
3: iinc 1, 1 //把一个常量值加到一个int类型的局部变量上
6: istore_2 //将int类型值存入局部变量2
7: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 从类中获取静态字段
10: iload_2 //从局部变量2中装载int类型值
11: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
14: return
上面的指令