Java运算符和优先级

运算符优先级表

优先级运算符结合性
1() [] .从左到右
2! +(正) -(负) ~ ++ --从右向左
3* / %从左向右
4+(加) -(减)从左向右
5<< >> >>>从左向右
6< <= > >= instanceof从左向右
7== !=从左向右
8&(按位与)从左向右
9^从左向右
10|从左向右
11&&从左向右
12||从左向右
13?:从右向左
14= += -= *= /= %= &= |= ^= ~= <<= >>= >>>=从右向左
说明:
  1、 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
  2、 结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。
  3、 instanceof作用是判断对象是否为某个类或接口类型,后续有详细介绍。
  4、 注意区分正负号和加减号,以及按位与和逻辑与的区别其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号去进行替代,示例代码:
  int m = 12;
  int n = m << 1 + 2;
  int n = m << (1 + 2); //这样更直观
Java中的运算符优先级决定了表达式中运的执行顺序。了解这些优先级有助于正确编写复杂的表达式,避免歧义错误。 ### 运算符优先级列表 Java中的运算符按照优先级从高到低排列如下: 1. **括号、数组索引、成员访问** - `()`:用于方法调用或强制类型转换。 - `[]`:用于数组索引。 - `.`:用于访问对象的成员。 - `::`:用于方法引用。 2. **单目运算符(后置)** - `++`、`--`:后置自增自减运算符。例如,`arr[i++]` 表示使用 `i` 的值,然后 `i` 增加 1。 3. **单目运算符(前置)** - `++`、`--`:前置自增自减运算符。例如,`int b = ++a` 表示将 `a` 增加 1,然后赋值给 `b`。 - `+`、`-`:一元加法一元减法。例如,`int c = -a` 表示 `c` 是 `a` 的负值。 - `~`:按位取反运算符。例如,`~(0b101)` 的结果是 `0b010`。 - `!`:逻辑非运算符。例如,`!(a > b)` 表示如果 `a` 不大于 `b`,则返回 `true`。 - `(type)`:类型转换运算符。例如,`(double)a / b` 将 `a` 转换为 `double` 类型后再进行除法运。 4. **运算符(乘法、除法、取模)** - `*`、`/`、`%`:乘法、除法取模运算符。例如,`5 % 3 = 2`,符号与被除数相同。 5. **运算符(加法、减法)** - `+`、`-`:加法减法运算符。例如,`"a" + 3` 的结果是 `"a3"`,因为字符串拼接的优先级高于术运。 6. **位移运算符** - `<<`:左移运算符。例如,`-8 >> 1` 的结果是 `-4`,表示带符号右移。 - `>>`:右移运算符。 - `>>>`:无符号右移运算符。例如,`-8 >>> 1` 的结果是 `2147483644`。 7. **关系运算符(比较)** - `<`、`<=`、`>`、`>=`:小于、小于等于、大于、大于等于运算符。 - `instanceof`:用于检查对象是否为特定类的实例。例如,`str instanceof String` 返回 `true` 或 `false`。 8. **关系运算符(相等性)** - `==`、`!=`:等于不等于运算符。对于引用类型,`==` 比较的是引用而不是值。 9. **按位与运算符** - `&`:按位与运算符。例如,`0b1100 & 0b1010` 的结果是 `0b1000`。 10. **按位异或运算符** - `^`:按位异或运算符。例如,`a ^= b; b ^= a; a ^= b;` 可以用于交换两个变量的值。 11. **按位或运算符** - `|`:按位或运算符。例如,`0b1001 | 0b0110` 的结果是 `0b1111`。 12. **逻辑与运算符(短路)** - `&&`:逻辑与运算符,具有短路特性。例如,`if(a != null && a.isEmpty())` 可以避免空指针异常。 13. **逻辑或运算符(短路)** - `||`:逻辑或运算符,具有短路特性。例如,`if(error)` 可以快速失败。 14. **三目条件运算符** - `? :`:三目条件运算符。例如,`int max = (a > b) ? a : b;`。 15. **赋值运算符** - `=`、`+=`、`-=` 等:赋值运算符。例如,`a = b = 5` 等价于 `a = (b = 5)`。 ### 结合性 Java中的大部分运算符是从左向右结合的,即从左向右计。只有单目运算符、赋值运算符三目运算符是从右向左结合的,即从右向左运。 ### 示例代码 以下是一个简单的示例代码,展示了如何使用这些运算符: ```java public class OperatorPrecedenceExample { public static void main(String[] args) { int m = 3, n = 4, x; x = -m++; // 取m的值,然后m增加1 x = x + 8 / ++n; // n增加1,然后进行除法运,最后加到x上 System.out.println(x); // 输出结果 } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值