经典案例-自增变量

自增变量

现有如下代码,问输出的结果为多少?

   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);
        }


这道题我一开始做的时候,也是信心满满,结果一看答案还是翻车了……
这也证明了自己的基础知识还不够扎实,就像修房子一样,下层基建不搞好,高楼大厦是造不起来的。
沉下心来,确定方向,继续努力。


接下来,让我记录下这道题的解答思路
如果有错误之处,希望各位大佬帮忙指出


1.i = i++
i++解释,因为++在i的后面,所以要先做运算,然后再自身+1,

a.int i = 1

局部变量值 -->int i = 1
操作数栈 --> null


b.把i的值, i++中的i,压入操作数栈中,++运算后面再计算
局部变量值 -->int i = 1
操作数栈 --> 1

c.现在开始++计算,i的局部变量值自增1,也就是+1;
局部变量值 -->int i = 2
操作数栈 --> 1

d.以上的运算是计算的 i = i++中,i++的值,这步进行赋值操作;
把操作数栈中的值赋值给局部变量值
局部变量值 -->int i = 1
操作数栈 --> null





2.int j =i++

a.由上条语句已知,int i = 1,并且也是i++,先把i的值压入到操作数栈,再进行自增;
局部变量值 -->int j = null
操作数栈 --> 1

b.进行j的赋值,并且i进行++运算,自身+1
局部变量值 -->int j = 1
操作数栈 --> null
局部变量值 --> int i = 2





3.int k = i + ++i * i++
用我自己的理解解释一下这条语句:
i的局部变量值+1 乘以 i的局部变量值,再加上i的局部变量值 ,然后再把得出的结果,赋值给变量k;
运算完成后,i的局部变量值再+1;

a.用上面的思路解决这条语句,知道i的局部变量值为2,int k = 2+ ++i * i++; 再计算++i,++再变量的前面,先自身局部变量+1,i的局部变量值就变成了3。再进行运算 --> int k = 2 + 3 * 3++; int k = 11;
此时
1.局部变量值 -->int j = 1
2.int k = 11
操作数栈 --> 1
局部变量值 --> int i = 3

b.k的赋值运算完成后,i再自增,i+1,i的局部变量值就为4;
最终输出结果为:
1.局部变量值 -->int j = 1
2.int k = 11
操作数栈 --> null
局部变量值 --> int i = 4






坚持下去,总有一天,再小的火种也会形成出燎原之势。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值