本文章内容前提是a数据类型为int。
当a数据类型为int时,执行a=a++后,a的数值不会变;
执行a=a+1后,数值加1;
执行a+=1后,数值加1;
public class TestGr{
public static void main(String[] args){
int a=3;
a=a++;
int b = 3;
b = b+1;
int c = 3;
c += 1;
}
}
以上代码执行完毕,a为3,b和c都为4;
为什么a=a++执行后不会改变数值大小呢?
原因在于执行过程,执行过程要在字节码层面去看;
字节码是给jvm虚拟机看的,用户想要看,需要先将代码执行为class文件;
再使用命令 javap -verbos 类名 加载;
上面为虚拟机显示的字符码及个人对其的部分理解。
也是执行过程中导致a=a++数值不变的主要原因;
但若用d=a++,d输出则为4,因为没被覆盖。小伙伴可自行实验。