对于Java的编译,【int a=0;int b=a++;】和【int a=0;int b=a;a++;】这两个有没有区别呢?

编译出来的class文件,有没有区别
2024年11月17日 18:22
有2个网友回答
网友(1):

1)这两条语句宏让没有区档绝隐别;

2)但是你如果针对编译期间的话,就涉及到JVM的知识;

3)这些a和b是变量行厅,确切的说是局部变量,是在栈上进行工作的,基于栈的解释器执行,涉及到局部变量表和操作数栈。

4)流程:a和b这两个变量的值是存放在局部变量表中的,进行加减等运算就需要将局部变量表中的值入栈,也就是要放入到操作数栈中,在字节码层面上,你上面写的两种语句,编译期间是不一样的,如入栈出栈的顺序就不一样。

个人学习见解,希望能够帮到你~~~

网友(2):

int a=0;
int b=a++;

int a=0;
int b=a;
a++;
感觉不出山搏来,刚开始学的时候不逗碰祥要吵银太纠结了;如果是循环的话打印就不一样了