【前缀自增/减++i】和【后缀自增/减i++】的区别

前缀自增/减

  • 前缀自增/减会先运算后传值。
  • 这里的运算指的是该数本身自增+1或者自减-1。

后缀自增/减

  • 后缀自增/减会先传值后运算。
  • -这里的运算指的是该数本身自增+1或者自减-1。

示例 1

public static void main(String[] arg0){
    int a = 1;
    int b = 1;
    ++a;
    b++;
    System.out.println("a:" + a);
    System.out.println("b:" + b);   
}

/*Output
a++: 2
b++: 2
*/
这样单独输出看似没有任何区别,但是假如直接输出++a和b++,结果就不一样了。

示例 2

public static void main(String[] arg0){
    int a = 1;
    int b = 1;
    System.out.println("++a:"+ ++a);
    System.out.println("b++:"+ b++);    
    System.out.println("a:"+ a);
    System.out.println("b:"+ b);    
}

/*Output
++a: 2
b++: 1
a: 2
b: 2

*/

++a的时候,a先运算再传值。

  • 显然,++a是个勤劳的小天使,它知道a被初始化为1,于是开始自增+1运算,因此你看见的++a是自增后的2,然后++a马上把自增的结果2赋值给a。

然而在b++时,b先传值再自增。

  • b++有着严重的拖延症,即便它知道b被初始化为1,它也说,先放着吧,我一会算好再给你,于是它顾着玩所以还没开始算,因此你看到的b++就是原本的数值1,但是它知道快到deadline要交稿啦,接着马上开始自增计算,急急忙忙地把1+1=2,2这个计算结果传给b,因此你看见的b就也是2啦~

示例 3(综合)

    class Test3{

    public static void main(String[] arg0){

        int i = 1;

        System.out.println("i : " + i );       // i = 1

        System.out.println("++i : " + ++i );   // i = 2
        System.out.println("i++ : " + i++ );   // i = 2
        System.out.println("i : " + i );       // i = 3

        System.out.println("--i : " + --i );   // i = 2
        System.out.println("i-- : " + i-- );   // i = 2
        System.out.println("i : " + i );       // i = 1

    }

/*Output
i : 1
++i : 2
i++ : 2
i : 3
–i : 2
i– : 1
* /

  • 总结 : 递增递减操作符不仅改变了变量,并且以变量的值作为生成的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值