第10篇:Java操作符有哪些?

📌 系列导航《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第9篇:Java运算符简介 |
➡️ 下一篇:第11篇:Java控制台输入输出语句

一、核心知识点

  • 运算符完整分类
  • 字面量定义:整型、浮点型、字符型、布尔型、字符串字面量
  • 表达式运算规则
  • 优先级详细表格(结合性)
  • 一些特殊操作符(instanceofnew-> lambda等)

二、通俗讲解(1分钟开心学)

1. 运算符分类

类别 运算符
算术 + - * / % ++ --
关系(比较) == != < > <= >= instanceof
逻辑 & ` ^ ! && `
位运算 & ` ^ ~ << >> >>>`
赋值 = += -= *= /= %= <<= >>= >>>= &= ` = ^=`
三元 ? :
其他 new () [] . ->(lambda) ::(方法引用)

2. 字面量

  • 整数:十进制123,二进制0b1111,八进制017(0开头),十六进制0xFF
  • 浮点3.141.23e-5.52.f
  • 字符'a''\n''\u4e2d'
  • 布尔truefalse
  • 字符串"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)用于比较内容。

六、练习题

  1. 表达式求值int i = 10; i = i++ + ++i;i的值。
  2. 位运算:写一个方法,判断一个整数二进制表示中有多少个1。
  3. 运算符优先级int x = 2; int y = x++ + ++x * 3; 计算xy

📊 你的学习进度

  • 当前:第10篇 / 共44篇 · 第二阶段:核心语法与面向对象(第5~20篇)
  • ✅ 已完成:第1~9篇
  • 📖 正在学:第10篇
  • ⏳ 待学习:第11~44篇

👉 📚 完整目录 & 学习指南 | 🔥 订阅本专栏,不错过每一篇

💡 本专栏每篇都包含:避坑表 + 面试高频考点 + 练习题。每天30分钟,100天拿offer!


👉 下一篇预告

《Java控制台输入输出语句》

内容简介:Scanner 的 nextInt 和 nextLine 经典陷阱,格式化输出 printf 用法。

💡 学完这篇,你将能写出健壮的控制台交互程序,再也不会被“输入字符串跳空”困扰。

📌 《Java 100 天进阶之路 | 从入门到上岗就业》 每天一篇,建议收藏 + 关注,一起100天拿offer!
👉 点击关注我,更新后第一时间收到推送!

更多推荐