编程中运算符的优先级是一个很值得注意的事情。虽然用括号基本上就可以避免所以优先级的问题,但如果对于运算符优先级掌握不是很清楚的话,有的时候看别人巧妙的代码会难以理解,或有的时候会错误地处理了优先级,因此没有加括号导致出现错误。
这里用一张表来表示Java优先级,这张表应该在很多blog种也能见到,因为其确实清楚简洁。
优先级 | 运算符 | 结合性 |
---|---|---|
1 | () [] . | 从左到右 |
2 | ! +(正号) -(负号) ~(取补) ++(自增) - -(自减) | 从右向左 |
3 | * / % | 从左到右 |
4 | +(加号) -(减号) | 从左到右 |
5 | << >> >>> | 从左到右 |
6 | < <= >= > instanceof | 从左到右 |
7 | ==(等于) != | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ?: | 从右向左 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右向左 |
数字越小,优先级越高。
总结一下,优先级次序如下:
括号>单元操作符>算术运算符>移位操作符>关系运算符>位运算符>逻辑运算符>三元操作符>赋值运算符