i = 1;i = i++
相当于下面的汇编码
0 iconst_1 ; 把1放到堆栈
1 istore_1 ;从栈顶取出1并存在局部变量1中(也就是变量 i ) 这时候i=1;
2 iload_1 ; 把i的值放到堆栈里去,这时候栈顶为1
3 iinc 1 1 ;把变量1(也就是 i)加1,这时候i = 2咯
6 istore_1 ;呵呵,从栈顶取出1存到i里去,呵呵i又回到1了。
7 return ; 返回。
i = 1; i = i+1
也来看一下:
0 iconst_1 ; stack = [1];
1 istore_1 ; stack =[] ; i = 1;
2 iload_1 ; stack = [1]; i = 1;
3 iconst_1 ; stack = [1,1] ; i =1;
4 iadd ; stack =[2];i = 1;
5 istore_1 ; stack = [];i =2;
6 return
i = 1 ; i=++i
0 iconst_1 ; stack=[1];
1 istore_1 ; stack=[] ; i =1;
2 iinc 1 1 ; stack=[];i=2;
5 iload_1 ; stack=[2];i=2;
6 istore_1 ; stack=[];i=2;
7 return
Done.