目录
一、什么是运算符?
二、算术运算符
1. 基本四则运算:+ - * / %
2. 增量运算符:+= -= *= %=
3. 自增/自减:++ --
三、关系运算符:判断“大小/相等”
四、逻辑运算符:判断“真假组合”
1. 逻辑与 &&
2. 逻辑或 ||
3. 逻辑非 !
4. 短路求值(&&和||的特性)
五、类型提升:运算时的“自动升级”
总结:运算符核心要点速记
作为刚入门Java的小白,最近啃完了运算符这块的知识点,结合笔记,整理出这篇博客。帮你快速理清Java运算符的核心内容~
一、什么是运算符?
计算机最基本用途之一是执行数学运算,比如:
int a = 10; int b = 20; a + b; // 加法 a < b; // 比较上述+和<就是运算符:对操作数进行操作的符号,不同运算符含义不同。
Java运算符可分为:算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算符等。
二、算术运算符
算术运算符是做数学运算的基础,重点看以下内容:
1. 基本四则运算:+ - * / %
代码示例:
int a = 20; int b = 10; System.out.println(a + b); // 30 System.out.println(a - b); // 10 System.out.println(a * b); // 200 System.out.println(a / b); // 2(int/int结果还是int,向下取整) System.out.println(a % b); // 0(取模,即除法的余数)⚠️ 注意:
都是二元运算符,必须有两个操作数(左右各一个)。
int / int结果还是int,会向下取整(比如3/2=1,不是1.5)。除法/取模时,右操作数不能为0(否则报错:
ArithmeticException: / by zero)。
2. 增量运算符:+= -= *= %=
这类运算符操作完成后,会把结果赋值给左操作数。代码示例:
int a = 1; a += 2; // 相当于 a = a + 2 → a=3 System.out.println(a); // 3 a -= 1; // 相当于 a = a - 1 → a=2 System.out.println(a); // 2 a *= 3; // 相当于 a = a * 3 → a=6 System.out.println(a); // 6 a /= 3; // 相当于 a = a / 3 → a=2 System.out.println(a); // 2 a %= 3; // 相当于 a = a % 3 → a=2 System.out.println(a); // 2⚠️ 注意:
增量运算符计算时,可以自动处理类型转换(不需要强制类型转换)。
比如
double a = 10.4; int b = 10; b += a;会报错(因为a是double,b是int),但b = b + a;也会报错,本质是类型不匹配。
int a = 3; int b = 2; // 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了 System.out.println(a / b); // 如果要得到数学中的结果,可以使用如下方式 double d = a*1.0 / b; System.out.println(d);3. 自增/自减:++ --
++给变量+1,--给变量-1。代码示例:
int a = 1; a++; // 后置++:先使用原值,表达式结束后+1 → 此时a=2 System.out.println(a++); // 输出2 // 比如: int a = 1; System.out.println(a++); // 输出1(先输出原值,再+1→a=2) System.out.println(a); // 输出2 ++a; // 前置++:先+1,再使用新值 → a=3 System.out.println(++a); // 输出3(先+1→a=3,再输出) System.out.println(a); // 输出3⚠️ 注意:
单独使用时,
++a和a++没区别。混合使用时:前置++ 先+1,再使用新值;后置++ 先使用原值,表达式结束后再+1。
只有变量能用自增/自减,常量不行(因为常量不能被修改)。
三、关系运算符:判断“大小/相等”
关系运算符有6个:== != < > <= >=,结果是true或false。代码示例:
public class Test { public static void main(String[] args) { int a = 10; //int b = ++a; //先++ 后使用 ++a b = a //b = 11 int b = a++; //先使用 后++ b = a a++ //b = 10 System.out.println(a);//11 System.out.println(b);//10 } }⚠️ 注意:
Java中
==表示“相等”,和数学中的“=”不同(数学里=是赋值,==是比较)。多次判断不能连着写(比如
3 < a < 5是错误的,Java不支持这种数学式写法)。
四、逻辑运算符:判断“真假组合”
逻辑运算符用于组合多个布尔表达式,结果也是true或false。重点看&&(短路与)、||(短路或)、!(逻辑非)。
1. 逻辑与&&
语法:
表达式1 && 表达式2要求:两个表达式都必须是布尔表达式。
结果:只有当两个表达式都为
true时,结果才为true;否则为false。短路特性:只要第一个表达式为
false,就不会执行第二个表达式(因为结果已经确定是false了)。
代码示例:
int a = 1; int b = 2; System.out.println(a == 1 && b == 2); // 左真且右真 → 真 System.out.println(a == 1 && b > 100); // 左真但右假 → 假 System.out.println(a > 100 && b == 2); // 左假 → 直接假(短路,不执行右边)2. 逻辑或||
语法:
表达式1 || 表达式2要求:两个表达式都必须是布尔表达式。
结果:只要有一个表达式为
true,结果就为true;否则为false。短路特性:只要第一个表达式为
true,就不会执行第二个表达式(因为结果已经确定是true了)。
代码示例:
int a = 1; int b = 2; System.out.println(a == 1 || b == 2); // 左真 → 真(短路,不执行右边) System.out.println(a == 1 || b > 100); // 左真 → 真(短路,不执行右边) System.out.println(a > 100 || b == 2); // 左假但右真 → 真 System.out.println(a > 100 || b > 100); // 左假且右假 → 假3. 逻辑非!
语法:
!表达式作用:真变假,假变真。
要求:表达式必须是布尔表达式。
代码示例:
int a = 10; System.out.println(!a); // 错误?不,a是int,不能直接!。应该是: boolean flag = true; System.out.println(!flag); // 假(真变假) flag = false; System.out.println(!flag); // 真(假变真)4. 短路求值(&&和||的特性)
&&:左侧为false,结果一定false,无需计算右侧。||:左侧为true,结果一定true,无需计算右侧。
代码示例(验证短路):
System.out.println(10 > 20 && 10 / 0 == 0); // 打印false(左侧false,短路,不执行10/0) System.out.println(10 < 20 || 10 / 0 == 0); // 打印true(左侧true,短路,不执行10/0) // 对比非短路的&和|(&和|不支持短路,会执行两边) System.out.println(10 > 20 & 10 / 0 == 0); // 抛出异常(执行了10/0) System.out.println(10 < 20 | 10 / 0 == 0); // 抛出异常(执行了10/0)五、类型提升:运算时的“自动升级”
不同类型的数据运算时,Java会自动把范围小的类型提升为范围大的类型。
示例:
System.out.println(1 + 0.2); // 1是int,0.2是double → int被提升为double → 输出1.2总结:运算符核心要点速记
算术运算符:
+ - * / %是基础,+= -= *= %=方便赋值,++ --要注意前置/后置。关系运算符:
== != < > <= >=结果是布尔值,别和数学符号混淆。逻辑运算符:
&&(短路与)、||(短路或)、!(逻辑非),注意短路特性。类型提升:运算时小类型自动转大类型,避免类型不匹配错误。