运算符是Java编程中实现数据运算、逻辑判断的核心语法元素,掌握各类运算符的规则和特性,是编写正确、高效代码的基础。以下梳理Java中常用运算符的核心知识点:
一、算术运算符
算术运算符用于基本的数值运算,核心包括+(加)、-(减)、*(乘)、/(除)、%(取余),使用时需注意以下规则:
- 除法运算
/:不能以0作为除数 ,否则会抛出ArithmeticException(算术异常,属于非受查异常); - 取余运算
%:- 结果符号由被除数(第一个数) 决定,与除数符号无关:
7 % 3 = 1、7 % -3 = 1(被除数7为正,结果为正)-7 % 3 = -1、-7 % -3 = -1(被除数-7为负,结果为负)
- 支持小数取余,例如
7.5 % 2.0 = 1.5;
- 结果符号由被除数(第一个数) 决定,与除数符号无关:
- 自增
++/自减--:- 分为前置(
++a/--a)和后置(a++/a--),前置先改变变量值再参与运算,后置先参与运算再改变变量值; - 特殊场景:
a = a++执行后,a的值不会变化(底层因局部变量表与操作数栈的取值规则导致,赋值时优先使用运算前的原始值)。
- 分为前置(
二、比较运算符
比较运算符(>、<、>=、<=、==、!=)用于判断两个数值的大小/相等关系,核心特性:
- 运算结果仅为
true或false(布尔类型),不会返回0或1(区别于C/C++等语言)。
三、位运算符
位运算符针对数值的二进制位进行操作,适用于底层运算优化:
- 按位与
&:对应二进制位全为1时结果为1,否则为0; - 按位或
|:对应二进制位有1时结果为1,否则为0; - 按位异或
^:对应二进制位不同时结果为1,相同时为0(可理解为"找不同"); - 按位取反
~:对二进制位逐位取反(~a = -a - 1)。
四、逻辑运算符
逻辑运算符用于布尔值的逻辑判断,核心包括&&(短路与)、||(短路或)、!(逻辑非):
- 短路求值特性:
&&:左侧为false时,右侧表达式直接跳过执行;||:左侧为true时,右侧表达式直接跳过执行;
- 注意区分:
&和|若用于布尔值判断,不支持短路求值(无论左侧结果如何,右侧都会执行)。
五、移位运算符(了解)
移位运算符针对二进制位进行位移操作,可简化乘除运算:
- 左移
<<:二进制位向左移动,右侧补0,效果等价于"乘以2的n次方"(a << n = a * 2ⁿ); - 右移
>>:二进制位向右移动,左侧补符号位(正数补0,负数补1),效果等价于"除以2的n次方"(a >> n = a / 2ⁿ); - 无符号右移
>>>:二进制位向右移动,左侧始终补0(仅对正数有效,负数移位后会变为正数)。
六、三目运算符
三目运算符(条件 ? 表达式1 : 表达式2)是简化的分支判断语法:
- 执行逻辑:条件为
true时执行表达式1,为false时执行表达式2; - 结果需赋值或使用(不能单独作为语句执行),例如
int max = a > b ? a : b。
总结
- Java算术运算符中,取余
%结果符号由被除数决定,除法不可除以0; - 逻辑运算符
&&/||支持短路求值,&/|(布尔场景)不支持; - 移位运算符可简化乘除运算,三目运算符是分支判断的简洁写法。