代码
问:++i和i++打印出来的都是几?
相信大多数人都知道打印出来的是几,分别的9和8,原因是什么呢?
字节码
流程如下:
1.bipush 8是往栈里面放入一个8
2.istore_1就是把栈里面的8弹出赋值给下标为1的变量(也就是i,args是下标为0的变量)
3.iload_1再将变量下标为1的也就是i放到栈中
4.iinc 1 by 1将变量数组下标为1的变量加1(此时是在局部变量表中加1,i变成了9)
5.istore_1 将栈中的i弹出,返回。
此时弹出的是栈中的i,此时栈中的i值为8,所以i++打印的是8.
流程如下:
1.bipush 8 将8放到栈中
2.istore_1 将栈中的8弹出赋值给i
3.iinc 1 by 1 给变量下标是1的变量进行加1,此时i为9
4.iload_1 将变