【Java面试题】你是否了解i++与++i
今天在学校的招聘会中,感觉面试的并不是很理想,准备用一个月的时间来准备Java面试,向着梦想前进
直接上题
@Test void t1(){ 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=i++;时,这里局部变量i变为1,因为i++的++在后面,操作数栈中的值也变为1,这时进行++操作,局部变量表中的i的值变为2,然后通过赋值运算符计算i的值,最终i的值变为1
这里j的分析过程中,先看i的值变化,i首先在局部变量表中为1,然后因为i++的操作,这时操作数栈中的值变为1,当进行++操作时,i的值变为2,而操作数栈中的值为1,赋值给j,这时j的值为1
最后分析k的过程,i的值为2,++i时,i的值变为3,i++时i的值不变,而操作数栈中的值变为1,这时计算++,i的值变为4,这时进行赋值操作,2+3*3=11,11为k的值
浙公网安备 33010602011771号