浅析自增自减运算符i++和++i

在学习Java运算符时,接触到了自增自减,看似简单的一个东西却时常不能理解,特别是i=i++的问题,今天带大家分析理解,走出困境。

一.自增自减运算符

分析之前先简单的来认识它们:

符号 意义
i++ 后置自增(后置++)
++i 前置自增(前置++)
i- - 后置自减(后置–)
- -i 前置自减(前置–)

二.分析与实例

1).i++和++i

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

上面代码里的++i和i++无论是前置自增,还是后置自增,实际上都是执行的i+1的操作,实际打印结果i=2,问题不大。

2).i=i++和i=++i

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

下面的代码i的打印结果没有自增。
官方解释:因为在java的执行过程中,i++和++i都直接对i进行了i=i+1的操作,但是不同的是i++得到的是i未进行加法操作的前的值的副本,而++i直接得到计算后的值。

看不懂没关系,我们不妨用代码来直观的理解,尝试建立一个中转站来接收i++的值:

  int i=1;
  i=i++;
  int temp=i++;//将i++赋值到中转站
  System.out.println("temp="+temp);//temp=1
  i=temp; //将中转站的值赋给i
  System.out.println("i="+i);//打印结果i=1
  

通俗的讲就是:i++是先赋值,然后再自增;++i是先自增,后赋值。

你可能感兴趣的:(java)