i++和++i

i++和i++相关面试题

计算原则:

  • 赋值运算符=,最后计算;
  • =右边的从左到右加载值依次压入操作数栈;
  • 实际先算哪个,看运算符优先级;
  • 赋值操作是将操作数栈中的值赋给局部变量表,比如i=i++,假设i的初始值为10,局部变量表中的值变化顺序为10->11->10;
  • 自增、自减操作都是直接在局部变量表中修改变量的值,不经过操作数栈;
  • i++是先将局部变量表中的值压入操作数栈,局部变量表中的值+1;
  • ++i是局部变量表中的值+1,再压入操作数栈;
  • 最后的赋值之前,临时结果也是存储在操作数栈中。

示例代码:

public class IncrementTest {
    @Test
    public void test() {
        int i = 1;
        i = i++;
        int j = i++;
        int k = i + ++i * i++;
        System.out.printf("i=%s\n", i);
        System.out.printf("j=%s\n", j);
        System.out.printf("k=%s\n", k);
    }
}

// 输出:
//i=4
//j=1
//k=11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值