今天看到一段java中++的代码,没运行之前还是算错了。想翻出来之前的随笔看一下结果找不到了,在这里再总结一下。
public static void main(String[] args) {
int i = 0;
i = ++i + i++ + ++i + i + i++;
System.out.println(i);
}
前++和后++的区别就在用哪个值去运算,前++是+1后的值,后++是用+1之前的值。
最后的结果是11。这里面还有一个问题就是++和加法的优先级。从下面这张表看++优先级是高于加法的。
优先级 | 运算符 | 简介 | 结合性 |
---|---|---|---|
1 | [ ]、 .、 ( ) | 方法调用,属性获取 | 从左向右 |
2 | !、~、 ++、 – | 一元运算符 | 从右向左 |
3 | * 、/ 、% | 乘、除、取模(余数) | 从左向右 |
4 | + 、 - | 加减法 | 从左向右 |
5 | <<、 >>、 >>> | 左位移、右位移、无符号右移 | 从左向右 |
6 | < 、<= 、>、 >=、 instanceof | 小于、小于等于、大于、大于等于, 对象类型判断是否属于同类型 | 从左向右 |
7 | == 、!= | 2个值是否相等,2个值是否不等于 | 从左向右 |
8 | & | 按位与 | 从左向右 |
9 | ^ | 按位异或 | 从左向右 |
10 | | | 按位或 | 从左向右 |
11 | && | 短路与 | 从左向右 |
12 | || | 短路或 | 从左向右 |
13 | ? : | 条件运算符 | 从右向左 |
14 | =、 += 、-= 、*= 、/=、 %=、 &=、 | =、 ^=、 <、<= 、>、>= 、>>= | 混合赋值运算符 |