最近有几个实习面试,所以复习了一下Java基础篇里面的内容,发现之前有关Java表达式计算的理解有些误区,课本上的好几道练习都没有做对。
Java表达式计算规则有如下:
1.找出表达式中的每一个双目运算符,先对其左边运算对象求值,再对右边运算对象求值。该规则的优先级高于其他任何规则。
2.再根据各个运算符的优先级和结合方向对表达式进行求值。
例如以下题目:
假设int a = 1且double d = 1.0,并且各个表达式无关。
a = (a = 3) + a; 结果:6
a = a + (a = 3); 结果:4
a += a + (a = 3); 结果:5
a = 5 + 5 * 2 % a--; 结果:5
a = 4 + 1 + 4 * 5 % (++a + 1); 结果:7
d += 1.5 * 3 + (++d); 结果:7.5
d -= 1.5 * 3 + d++; 结果:-4.5