关于JAVA中单目运算符自增(++)自减(--)的分析

虽然在JAVA中有自增(++)自减(–)运算符的存在,但是在实际的开发中很少用到。但是最近准备面试的时候发现很多面试的题目中都有这方面的问题,所以觉得好好研究一下是很有必要的。
虽然我们都知道自增有前自增(++i)和后自增(i++)的情况,自减也是一样。而且我们都是到自增前自增是先加1在进行操作,后自增是先进行相应的操作在进行加1。同样自减的运算也差不多。
但是我们来看一道面试题

    package com.carter.java01;

public class zizeng {
    public static void main(String [] args){
        int test = 0;
        for(int i = 0;i<100;i++){
            test = test++;
        }   
        System.out.println(test);
    }
}

很多人认为输出结果会是100,但是实际输出结果却是0。很多人觉得很惊讶,这是为什么呢?
原来这JAVA编译器运用了中间缓存机制,也就是说在运算的时候引入了一个中间变量。也就是说test=test++,这句话其实是等价于:

    temp = test;
    test = test +1;
    temp = 0;

这样我们就不难理解结果是0了。同样的在前自增里面也是引入了中间变量如test = ++test;这条语句等价于:

temp = test+1;
test = test +1;
test = temp;

基于这样的思路我们就很好理解JAVA中的自增、自减问题了。下面我们再来看一道题。

    public static void main(String [] args){
        int i = 0;
        int j = i++ + i++;      //这条语句等价于j = (i++) + (i++)
        System.out.println("输出i的结果为"+i);
        System.out.println("输出j的结果为"+j);
    }
}

分析当第一个(i++)时,引入一个中间变量temp及:
temp = i ;
i = i++;
temp = i;
所以就等价于0+(i++);所以j的最后结果是1, 但是i自加了2次所以最后的结果是2.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值