package test;
public class Test{
public static void main(String[] args){
int j=10;
int b=j++;
System.out.println(b);
}
}
- ++i与i++前后无其他变量
从字节码角度,两者功能一致:
都先存储在LV[i]内,在LV[i]内自增
- ++i与i++前后有其他变量:
int j=10;
int b=++j;
++i:先自增,后赋值
先存储在LV[i]内,在LV[i]内自增,后取出自增后的值放到操作数栈,再存到LV[i+1]即b
此时b=11
int j=10;
int b=j++;
i++:先赋值,后自增
先存储在LV[i]内,在LV[i]内自增,但自增前把LV[i]取出放到操作数栈,自增后的值不再取出,而是把自增前的值放到LV[i]+1即b
此时b=10