首先咱們要明白,java中進行計算時,++在前先進行++計算,在賦值。++在後先賦值 在進行++操做java
package com.aria.basic; /** * ++ 與 -- 的測試 * @author aria * */ public class OperatorTest { public static void main(String[] args) { int a = 10; int b = ++a ; int c =(a++)+(--b); int d =(--a)+(b++)-(++c); int e =(a++)-(++b)+(c--)-(--d); System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); System.out.println(e); } }
個人計算過程:c++
/** * ++ 與 -- 的測試 * @author aria * */ public class OperatorTest { public static void main(String[] args) { int a = 10; //a = 10; int b = ++a ; // a = 11 , b = 11 System.out.println(a);//11 System.out.println(b);//11 int c =(a++) + (--b);//a=11 b=10 c = 21 System.out.println(a);//12 System.out.println(b);//10 System.out.println(c);//21 int d =(--a) + (b++) - (++c);//a=11 b=10 c=22 System.out.println(a);//11 System.out.println(b);//11 System.out.println(c);//22 System.out.println(d);//-1 int e =(a++)-(++b)+(c--)-(--d);//a=11 b=12 c=22 d=-2 System.out.println(a);//12 System.out.println(b);//12 System.out.println(c);//21 System.out.println(d);//-2 System.out.println(e);//23 } }
分析:測試
int a = 10;此時 a = 10;spa
int b = ++a;因爲++再前,先執行++操做再賦值 即a = a+1 ;a = 11,b = a ,b = 11。code
因此此處打印a,b的值都爲11blog
int c = (a++)+(--b); 此是++在後因此先參與加法運算再執行a的自增,--再前對於b先進行--操做因此b=10 對於c實際運算的數字爲 11 + 10class
因此c的值爲21 ,而後a進行++操做,因此a=12變量
因此此處打印的a,b,c結果分別爲12,10,21im
int d = (--a)+(b++)-(++c);對於變量a--在前先執行自減操做 a = 11 對於b++在後後進行自增參與運算的爲b的當前值,對於c++在前,先執行++操做因此c =22 。對於d的運算爲 11+10 - 22 因此d = -1 而後b執行++操做 b的值爲11新手
因此此處打印abcd的值爲 11,11,22,-1
int e =(a++)-(++b)+(c--)-(--d);對於變量a參與運算的值爲11 對於變量b參與運算的值爲12 對於變量c參與運算的值爲22 對於d參與運算的值爲-2 因此e = 11-12+22-(-2) = 23
對於a 在進行++因此a-=12 b=12 c進行--操做 c=21 d=-2
因此最終打印結果爲:
做爲新手若是遇到這種運算符特別多和複雜的能夠慢慢的進行拆解,一步一步慢慢進行分析。