运算符优先级表
优先级 运算符 结合性
1 () [] . 从左到右
2 ! +(正) -(负) ~ ++ -- 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 << >> >>> 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左
从表中可以看出++的优先级比较高
但提醒楼主注意下面的情况
public class Test2 {
public static void main(String[] args) {
int a = 5;
int b = 10;
a = ++b;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
输出结果:
a = 11
b = 11
代码中的 a = ++b
要先执行++b,再执行赋值,即相当执行下面两步
(1)b ++ (++b和b++是一样的 ,b执行++后就会加1,从10变为11)
(1)a = b; (这里a就拥有了和b一样的值,所以a也等于11)
另一种情况:
public class Test2 {
public static void main(String[] args) {
int a = 5;
int b = 10;
a = b++;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
输出结果:
a = 10
b = 11
代码中的a = b++也是分两步执行的。但和上面那种情况刚好相反
(1)先执行 a = b 所以a就拥有了b的值。即 a = 10
(2) 再执行 b ++ 这里b++后,b就从10加1变成了11