代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 1;
a= a++;
System.out.println(String.valueOf(a));
}
输出结果为:1
javap工具,仔细分析其字节码,可以发现jvm的操作是:
1、将a压入栈顶,此时已经不是引用本地变量a了,相当于copy a,将copy a压入栈顶
2、将本地变量a自增1
3、将栈顶的copy a赋值给本地变量a
用代码表示其操作:
int tmp = a;
a++;
a=tmp;
附:而对于a = ++a;的操作则是:
a++;
int tmp = a;//tmp压入栈顶
a = tmp;
所以对于 a=++a;的输出结果为2.