++与--问题
首先我们要明白,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); } }
我的计算过程:
/** * ++ 与 -- 的测试 * @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;
int b = ++a;由于++再前,先执行++操作再赋值 即a = a+1 ;a = 11,b = a ,b = 11。
所以此处打印a,b的值都为11
int c = (a++)+(--b); 此是++在后所以先参与加法运算再执行a的自增,--再前对于b先进行--操作所以b=10 对于c实际运算的数字为 11 + 10
所以c的值为21 ,然后a进行++操作,所以a=12
所以此处打印的a,b,c结果分别为12,10,21
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
所以最终打印结果为:
作为新手如果遇到这种运算符特别多和复杂的可以慢慢的进行拆解,一步一步慢慢进行分析。