让我们回顾一下相关知识:
自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。
自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)。前缀式是先减1再使用;后缀式是先使用再减1。 
自增与自减运算符还遵循以下规律:
   1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
   2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。

   3. 它们的运算结果的类型与被运算的变量的类型相同。 



举个栗子:
int resultM = (++m)+(++m)+(++m);
第一次++m  m已经等于11了
第二次++m  m相当于11+1=12了
第三次++m  m相当于12+1=13了
resultM =11+12+13=36

 int resultN = (--n)+(--n)+(--n);
第一次--n  n已经等于9了
第二次--n  n相当于9-1=8了
第三次--n  n相当于8-1=7了
resultN = 9+8+7=24
再来一个栗子
int a =  1;
  
  
  
  
   
   b = a++;
  
  
  
  
   
   问最终a和b是多少?
  
  
  
  
   
   毫无疑问,答案是a = 2, b=1,但是其实这中间省略了一个步骤:临时变量的使用!什么意思呢?详细地可以这么理解:
  
  
  
  
   
   ①a++的运算特性决定了计算机需要先用一个临时变量来保存a运算之前的值,此时临时变量为1
  
  
  
  
   
   ②然后a自增加1,此时a为2
  
  
  
  
   
   ③最后把之前保存的临时变量复制给变量b,即b-1
  
  
  
  
   
   用逻辑代码表示大意为:
  
  
  
  
   
   int a = 1;
  
  
  
  
   
   int temp = a;
  
  
  
  
   
   a = a+1;
  
  
  
  
   
   b = temp;
  
  
  
  
   
   这样理解起来就是真正的详细运算原理。利用这个原理,有道面试题刚巧用到了这个。比如:
  
  
  
  
   
   int a  = 1;
  
  
  
  
   
   a = a++;
  
  
  
  
   
   问a最终为几?
  
  
  
  
   
   如果按照百科上的说法 : a= a++会被拆分成
  
  
  
  
   
   a = a;
  
  
  
  
   
   a++;
  
  
  
  
   
   最后a = 2; 然后这个结果是不对的,结果应该是a=1. 为什么呢?,因为按照我之前分析的三个步骤,实际上:
  
  
  
  
   
   ①temp = a  ,此时temp =1
  
  
  
  
   
   ②a = a + 1 此时a = 2;
  
  
  
  
   
   ③ a = temp , 此时a又变回了1了,所以我们不难理解,最后结果为a=1
  
  
  
  
   
   虽然此题比较简单,但是初学者很容易出现错误,基础不扎实的话很容易就掉进坑了,故在此记录,警示自己!