欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【java高频面试题-1】 自增变量

程序员文章站 2022-07-08 10:14:05
自增变量写出下面输出结果并分析。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); .
}

【java高频面试题-1】 自增变量

字节码查看

【java高频面试题-1】 自增变量

解析i++

int i =1 将1存入局部变量表i=1
【java高频面试题-1】 自增变量

【java高频面试题-1】 自增变量
【java高频面试题-1】 自增变量
【java高频面试题-1】 自增变量

解析j=i++

同i++,j=1
【java高频面试题-1】 自增变量
这次因为赋值操作给了j,所以1就赋值给了j,所以这次i就变为了2
【java高频面试题-1】 自增变量

解析k= i + ++i * i++

【java高频面试题-1】 自增变量
右边先遇到i,那么i的值先进入操作数栈
【java高频面试题-1】 自增变量
++i计算,加加在前会先把i变成3
【java高频面试题-1】 自增变量
然后将3压入操作数栈
【java高频面试题-1】 自增变量
然后遇到了i++,i++先把i的值压入栈
【java高频面试题-1】 自增变量
然后i再次进行自增变为4
【java高频面试题-1】 自增变量
然后进行乘法运算
【java高频面试题-1】 自增变量
【java高频面试题-1】 自增变量
【java高频面试题-1】 自增变量
【java高频面试题-1】 自增变量

小结

●赋值= ,最后计算
●=右边的从左到右加载值依次压入操作数栈
●实际先算哪个,看运算符优先级
●自增、自减操作都是直接修改变量的值,不经过操作数栈
●最后的赋值之前,临时结果也是存储在操作数栈中
●建议:《JVM虚拟机规范》关于指令的部分

本文地址:https://blog.csdn.net/qq_43925089/article/details/107682485