本文纲要
- 运算符与表达式
- 算术运算符
加减乘除
除法特点:整数相除与浮点运算
取模运算 - 字符的加操作
char类型提升机制
ASCII码表简要说明 - 字符串的加操作
拼接规则
运算顺序与优先级 - 案例:数值拆分
- 自增自减运算符
单独使用
参与操作(前置与后置的区别) - 赋值运算符
基本赋值
扩展赋值(+=、-=等)
扩展赋值隐含的强制类型转换 - 关系运算符(比较运算符)
- 逻辑运算符
与(&)、或(|)、非(!)、异或(^)
应用场景 - 短路逻辑运算符
&& 与 & 的区别
|| 与 | 的区别 - 三元运算符
格式与执行流程
求最大值/最小值 - 案例:三个和尚
运算符与表达式
运算符:对常量或变量进行操作的符号,如 +、-、*、/ 等。
表达式:用运算符将常量或变量连接起来,符合 Java 语法的式子。
例如:
int a = 10;
int b = 20;
int c = a + b; // a + b 是一个算术表达式,+ 是算术运算符
算术运算符
1 ) 加减乘除
+、-、* 与数学中的运算规则一致,同样遵循“先乘除后加减”。
System.out.println(10 + 20); // 30
System.out.println(10 - 20); // -10
System.out.println(10 * 20); // 200
2 ) 除法特点
两个整数相除,结果只能得到整数,小数部分会被舍弃。若想得到带小数的结果,必须让运算中有浮点数参与。
System.out.println(10 / 2); // 5
System.out.println(10 / 3); // 3 (小数部分被截断)
System.out.println(10 / 3.0); // 3.3333333333333335
System.out.println(10.0 / 3); // 3.3333333333333335
3 ) 取模运算(%)
取模运算符 % 用于取余数。
System.out.println(5 % 2); // 5 ÷ 2 = 商2 余1,结果为1
字符的加操作
当 char 类型与 int 类型进行运算时,char 会先提升为 int,提升的过程是查找该字符在 ASCII 码表 中对应的数值。

常用 ASCII 值:
- ‘a’ → 97
- ‘A’ → 65
- ‘0’ → 48
int a = 1;
char b = 'a'; // 'a' 对应 97
System.out.println(a + b); // 1 + 97 = 98
字符串的加操作
当 + 操作中出现字符串时,+ 就变成了字符串连接符,会将其他数据拼接成新字符串。
System.out.println("itheima" + 666); // itheima666
System.out.println("itheima" + true); // itheimatrue
运算顺序从左到右执行,注意:先遇到数字则先做算术运算,遇到字符串后开始拼接。
System.out.println(1 + 99 + "年大树"); // 100年大树
System.out.println("5+5=" + 5 + 5); // 5+5=55
System.out.println("5+5=" + (5 + 5)); // 5+5=10
案例:数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位并打印。
拆分公式:
- 个位:数值 % 10
- 十位:数值 / 10 % 10
- 百位:数值 / 100
代码实现:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数:");
int num = sc.nextInt();
int ge = num % 10; // 个位
int shi = num / 10 % 10; // 十位
int bai = num / 100; // 百位
System.out.println("整数" + num + "个位为:" + ge);
System.out.println("整数" + num + "十位为:" + shi);
System.out.println("整数" + num + "百位为:" + bai);
}
}
自增自减运算符
++:变量自身加1
–:变量自身减1
1 ) 单独使用
单独使用时,++ 或 – 放在变量前或后,效果一样。
int a = 10;
a++; // 等价于 a = a + 1;
System.out.println(a); // 11
int b = 10;
--b;
System.out.println(b); // 9
2 ) 参与操作使用
前置(++a):先自增/自减,再参与其他操作。
后置(a++):先使用原值参与操作,然后再自增/自减。
// 前置 ++
int a = 10;
int b = ++a; // a先自增为11,再赋值给b
System.out.println(a); // 11
System.out.println(b); // 11
// 后置 ++
int aa = 10;
int bb = aa++; // 先将aa原值10赋给bb,然后aa自增为11
System.out.println(aa); // 11
System.out.println(bb); // 10
注意:++ 和 – 只能操作变量,不能操作常量(如 10++ 非法)。
赋值运算符
1 ) 基本赋值运算符
= :将右侧的数据赋值给左侧的变量。
2 ) 扩展赋值运算符
+=、-=、*=、/=、%= 等,将左右两边的数据做对应运算后,再把结果赋值给左边。
int a = 10;
a += 20; // 等价于 a = a + 20;
System.out.println(a); // 30
3 ) 隐含的强制类型转换
扩展赋值运算符底层会自动添加强制类型转换,能避免一些因类型不匹配导致的编译错误。
short s = 1;
// s = s + 1; // 编译错误:int 不能直接赋值给 short
s = (short)(s + 1); // 需要手动强转
short ss = 1;
ss += 1; // 等价于 ss = (short)(ss + 1); 自带强转,编译通过
4 ) 关系运算符(比较运算符)
用于比较两个数据的大小关系,结果为布尔类型 true 或 false。
| 运算符 | 含义 |
|---|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| == | 等于 |
| != | 不等于 |
System.out.println(10 > 20); // false
System.out.println(10 >= 20); // false
System.out.println(10 < 20); // true
System.out.println(10 <= 20); // true
System.out.println(10 == 20); // false
System.out.println(10 != 20); // true
注意:不要把 == 误写为 =。
逻辑运算符
逻辑运算符用于整合多个比较表达式,连接 boolean 类型的值,最终得到 boolean 结果。
1 ) 基本逻辑运算符
| 运算符 | 名称 | 说明 |
|---|---|---|
| & | 与 | 两边都为 true 结果才为 true,否则为 false(遇 false 则 false) |
| 或 | ||
| ! | 非 | 取反,!true 为 false,!false 为 true |
| ^ | 异或 | 两边相同为 false,不同为 true |
// & 与
System.out.println(true & true); // true
System.out.println(true & false); // false
// | 或
System.out.println(true | false); // true
System.out.println(false | false); // false
// ! 非
System.out.println(!true); // false
// ^ 异或
System.out.println(true ^ false); // true
System.out.println(true ^ true); // false
2 ) 应用场景
例如键盘录入学生成绩,成绩在 90-100 之间输出“优秀”:
int score = 95;
if (score >= 90 & score <= 100) {
System.out.println("优秀");
}
短路逻辑运算符
&&(短路与):与 & 作用相同,但若左边为 false,右边不再执行。
||(短路或):与 | 作用相同,但若左边为 true,右边不再执行。
int x = 3, y = 4;
// 使用 &&,左边 ++x > 4 为 false,右边 y-- 不会执行
System.out.println(++x > 4 && y-- < 5); // false
System.out.println("x=" + x); // 4
System.out.println("y=" + y); // 4(y 未自减)
对比单 & 时,无论左边结果如何,右边都会执行。
三元运算符
格式:关系表达式 ? 表达式1 : 表达式2
执行流程:
- 计算关系表达式的值。
- 若为 true,取表达式1的值;若为 false,取表达式2的值。
int a = 10, b = 20;
int max = a > b ? a : b; // 取较大值
System.out.println(max); // 20
int min = a > b ? b : a; // 取较小值
System.out.println(min); // 10
案例:三个和尚
需求:已知三个和尚的身高分别为 150、210、165,求最高身高。
思路:先用三元运算符比较前两个,得到较大值,再用该较大值与第三个比较,得到最终最大值。
public class Test {
public static void main(String[] args) {
int a = 150, b = 210, c = 165;
int tempMax = a > b ? a : b; // 前两个的较大值
int max = tempMax > c ? tempMax : c; // 与第三个比较
System.out.println(max); // 210
}
}
进阶写法(可读性较差,不推荐):
int result = a > b ? (a > c ? a : c) : (b > c ? b : c);
System.out.println(result);
总结
本文详细讲解了 Java 中各类运算符的用法与注意事项,从基础的算术运算到逻辑判断,再到三元运算符的组合应用,为后续学习流程控制语句打下坚实基础。

137

被折叠的 条评论
为什么被折叠?



