【java高频面试题-1】 自增变量
程序员文章站
2022-04-21 10:23:44
自增变量写出下面输出结果并分析。public static void main(String[] args) {int i= 1;i= i++;int j= i++;int k= i + ++i * i++;System.out.println("i=" + i); .System.out.println("j=" + j);System.out.println("k=" + k); .}字节码查看解析i++int i =1 将1存入局部变量表i=1解...
自增变量
写出下面输出结果并分析。
public static void main(String[] args) {
int i= 1;
i= i++;
int j= i++;
int k= i + ++i * i++;
System.out.println("i=" + i); .
System.out.println("j=" + j);
System.out.println("k=" + k); .
}
字节码查看
解析i++
int i =1 将1存入局部变量表i=1
解析j=i++
同i++,j=1
这次因为赋值操作给了j,所以1就赋值给了j,所以这次i就变为了2
解析k= i + ++i * i++
右边先遇到i,那么i的值先进入操作数栈
++i计算,加加在前会先把i变成3
然后将3压入操作数栈
然后遇到了i++,i++先把i的值压入栈
然后i再次进行自增变为4
然后进行乘法运算
小结
●赋值= ,最后计算
●=右边的从左到右加载值依次压入操作数栈
●实际先算哪个,看运算符优先级
●自增、自减操作都是直接修改变量的值,不经过操作数栈
●最后的赋值之前,临时结果也是存储在操作数栈中
●建议:《JVM虚拟机规范》关于指令的部分
本文地址:https://blog.csdn.net/qq_43925089/article/details/107682485
上一篇: 黑茶是什么茶?黑茶有哪些种类?