java中i++(或i--)和++i(或--i)的区别

java中i++(或i–)和++i(或–i)的区别

学习java过程中踩过这样一个坑,就是*“++”*放在变量前后的区别问题,今天就跟大家讨论一下,它们在表达式中参与运算时到底有何区别呢?

首先来看一下下面这段代码:

public class Test {
    public static void main(String[] args) {
        int i = 1, j = ++i+ ++i + i--;
        System.out.println(i);
        System.out.println(j);
    }
}

i和j输出结果分别是多少呢,不知道大家是否能一眼就看出来。正确答案是***2***和***8。***

来说说它们的原理,大家都知道不管是++i还是i++,结果都是i的值自增1,那区别就在于自增行为在参与运算时执行先后的问题。i++是原值先参与运算,运算完之后自身的值再加1;而++i是先自加1然后再参与运算。

下面来分析一下这段代码的执行流程:

首先知道了i的初始值是1,然后直接看=号右边的代码

++i 先自加后参与运算,所以此时i的值是2

同理后面的++i是在2的基础上自加1就是3

最后一个表达式i–,因为是先运算后自减,所以参与运算时的值还是3,运算完自减为2

所以最后输出到控制台上的i值为2,j的值为2 + 3 +3就是8了

总结:i++是先参与运算然后自加1,++i是先自加1然后参与运算。i–和--i也同理

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值