请求详细一点点的指导

看到一个JAVA问题
int a = 1;
int b = a++ + ++a;
System.out.print( b );

那么 b 等于多少?

  1. 运算符的优先级
    单目运算 高于 算数运算
    所以,加法运算最后做
  2. 单目运算的运算规则
    前缀和后缀的区别在于先运算还是后运算。
    • 前缀运算的规则是先运算后取值,比如:++a 的规则就是先自增后取值
    • 后缀运算的规则是先取值后运算,比如:a++ 的规则就是先取值后自增
  3. 表达式求解过程 a++ + ++a
    1. a++ 先取值就是先取a的值说明 a++ 的值是1,后自增说明 a++ 取值之后a的值变为2
    2. ++a 因为上一步 a的值为2,这一步先运算 得到 3,后取值得到 ++a的值是3
    3. + 加法运算,将两个子表达式的值相加,也就是 1+3 ,最终得到 4
  4. 表达式赋值
    b = 4
  5. a 的值是 3

如果是加加在前面,则先算加加,如果加加在后面则此句执行完后再算加加。
1、比如:b=++a;相当于++a;b=a;而b=a++;相当于b=a;a++

2、那么:b=a++ + ++a;则后面部分的++a先执行,相当于:++a;b=a+a;a++

3、结果a先变为2,然后b等于两个a相加等于4,然后a再自增一变为3,b=2+2=4

a++是计算完成后自加一

++a是计算之前自加一

b=a++(这里a=1) + ++a(现在a=3,a先加上刚才a++的1,然后加上++a的1)

所以b=4