《Java 100 天进阶之路 》第10篇:Java操作符有哪些?
·
第10篇:Java操作符有哪些?
📌 系列导航:《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第9篇:Java运算符简介 |
➡️ 下一篇:第11篇:Java控制台输入输出语句
一、核心知识点
- 运算符完整分类
- 字面量定义:整型、浮点型、字符型、布尔型、字符串字面量
- 表达式运算规则
- 优先级详细表格(结合性)
- 一些特殊操作符(
instanceof、new、->lambda等)
二、通俗讲解(1分钟开心学)
1. 运算符分类
| 类别 | 运算符 | |||
|---|---|---|---|---|
| 算术 | + - * / % ++ -- |
|||
| 关系(比较) | == != < > <= >= instanceof |
|||
| 逻辑 | & ` |
^ ! && |
` | |
| 位运算 | & ` |
^ ~ << >> >>>` |
||
| 赋值 | = += -= *= /= %= <<= >>= >>>= &= ` |
= ^=` |
||
| 三元 | ? : |
|||
| 其他 | new () [] . ->(lambda) ::(方法引用) |
2. 字面量
- 整数:十进制
123,二进制0b1111,八进制017(0开头),十六进制0xFF - 浮点:
3.14、1.23e-5、.5、2.f - 字符:
'a'、'\n'、'\u4e2d' - 布尔:
true、false - 字符串:
"Hello"
3. 优先级表(从高到低)
| 优先级 | 运算符 | 结合性 | ||
|---|---|---|---|---|
| 1 | () [] . :: |
左 | ||
| 2 | ++ -- + - ~ ! (一元) |
右 | ||
| 3 | * / % |
左 | ||
| 4 | + - (二元) |
左 | ||
| 5 | << >> >>> |
左 | ||
| 6 | < > <= >= instanceof |
左 | ||
| 7 | == != |
左 | ||
| 8 | & |
左 | ||
| 9 | ^ |
左 | ||
| 10 | ` | ` | 左 | |
| 11 | && |
左 | ||
| 12 | ` | ` | 左 | |
| 13 | ? : |
右 | ||
| 14 | = += 等赋值 |
右 | ||
| 15 | -> (lambda) |
右 |
记住口诀:单目乘除位关系,逻辑三目后赋值。
三、实操代码案例 + 场景说明
场景:需要解析配置文件中的数字(十六进制、二进制),并进行位掩码操作。
public class OperatorFullDemo {
public static void main(String[] args) {
// 不同进制字面量
int dec = 100;
int hex = 0x64;
int bin = 0b1100100;
int oct = 0144;
System.out.println(dec == hex); // true
// 优先级演示
int a = 10, b = 20, c = 30;
int result = a + b * c; // 610
int result2 = (a + b) * c; // 900
// instanceof
String str = "hello";
boolean isStr = str instanceof String; // true
// lambda表达式(Java 8+)
Runnable r = () -> System.out.println("hello");
r.run();
}
}
位运算应用:判断是否为2的幂
boolean isPowerOfTwo = (n > 0) && ((n & (n - 1)) == 0);
四、避坑要点
| 错误/误区 | 后果 | 正确做法 |
|---|---|---|
| 位运算优先级低于比较运算 | (a & b) == 0 忘记括号会先比较再与 |
位运算加括号 |
++在复杂表达式中多次使用 |
结果不确定,不同编译器可能不同 | 避免i = i++这类写法 |
new操作符与泛型搭配 |
new T() 不允许 |
通过反射创建 |
instanceof左边为null |
返回false,不抛异常 |
无需额外判空 |
五、面试高频考点
Q1:优先级最高的运算符是什么?
括号
()、数组下标[]、成员访问.、方法引用::。
Q2:^运算符有什么特殊用途?
按位异或可用于简单加密(异或两次恢复原文)和无临时变量交换两个数:
a = a ^ b; b = a ^ b; a = a ^ b;
Q3:=='和equals`的区别?
==比较基本类型时比较值,比较引用类型时比较内存地址;equals是方法,默认也是比较地址,但常被重写(如String)用于比较内容。
六、练习题
- 表达式求值:
int i = 10; i = i++ + ++i;求i的值。 - 位运算:写一个方法,判断一个整数二进制表示中有多少个1。
- 运算符优先级:
int x = 2; int y = x++ + ++x * 3;计算x和y。
📊 你的学习进度
- 当前:第10篇 / 共44篇 · 第二阶段:核心语法与面向对象(第5~20篇)
- ✅ 已完成:第1~9篇
- 📖 正在学:第10篇
- ⏳ 待学习:第11~44篇
👉 📚 完整目录 & 学习指南 | 🔥 订阅本专栏,不错过每一篇
💡 本专栏每篇都包含:避坑表 + 面试高频考点 + 练习题。每天30分钟,100天拿offer!
👉 下一篇预告
《Java控制台输入输出语句》
内容简介:Scanner 的 nextInt 和 nextLine 经典陷阱,格式化输出 printf 用法。
💡 学完这篇,你将能写出健壮的控制台交互程序,再也不会被“输入字符串跳空”困扰。
📌 《Java 100 天进阶之路 | 从入门到上岗就业》 每天一篇,建议收藏 + 关注,一起100天拿offer!
👉 点击关注我,更新后第一时间收到推送!
更多推荐




所有评论(0)