《Java 100 天进阶之路》第9篇:Java运算符简介

第9篇:Java运算符简介

📌 系列导航《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第8篇:Java基本数据类型 |
➡️ 下一篇:第10篇:Java操作符有哪些?

一、核心知识点

  • 算术运算符:+ - * / % ++ --
  • 赋值运算符:= 及复合赋值(+=-=等)
  • 比较运算符:== != < > <= >= instanceof
  • 逻辑运算符:& | ! ^ && ||
  • 位运算符:& | ^ ~ << >> >>>
  • 三元运算符:条件 ? 真值 : 假值
  • 运算符优先级(括号最优先)

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

1. 算术运算符(小心除法)

  • /:整数除法得到整数,5/2=2(不是2.5),想要小数必须有浮点数参与:5.0/2
  • %:取余,结果符号与被除数相同:-5%2 = -15%-2 = 1
  • ++/--:前置先变后用,后置先用后变

2. 逻辑运算符(短路与非短路)

  • &&:短路与,左边false右边不执行
  • ||:短路或,左边true右边不执行
  • &/|:非短路,两边都执行(通常用于位运算)

生活类比
&&就像“如果今天下雨而且我没带伞”,如果“没下雨”,后面“没带伞”就不再检查了。&则一定两边都检查,浪费精力。

3. 位运算符(直接操作二进制,效率高)

  • & 按位与、| 按位或、^ 异或、~ 取反
  • << 左移(相当于乘2的幂)、>> 右移(符号位填充)、>>> 无符号右移(0填充)

4. 三元运算符简化if-else

int max = (a > b) ? a : b;

5. 优先级速记:括号 > 单目 > 算术 > 移位 > 比较 > 逻辑 > 赋值

三、实操代码案例 + 场景说明

场景:写一个简单的计算器,处理用户输入的整数运算。

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 10, b = 3;
        System.out.println("a + b = " + (a + b));
        System.out.println("a - b = " + (a - b));
        System.out.println("a * b = " + (a * b));
        System.out.println("a / b = " + (a / b));        // 3
        System.out.println("a % b = " + (a % b));        // 1
        
        // 自增
        int x = 5;
        int y = x++;   // y=5, x=6
        int z = ++x;   // x先变7, z=7
        
        // 逻辑短路
        boolean flag = false;
        int num = 10;
        if (flag && (num++ > 5)) { }
        System.out.println(num);  // 10,短路,num++未执行
        
        // 位运算
        int n = 7;   // 111
        System.out.println(n << 2);  // 28 (11100)
        System.out.println(n >> 1);  // 3  (11)
        System.out.println(-8 >> 2); // -2 (符号位填充)
        System.out.println(-8 >>> 2); // 大正数,无符号右移
    }
}

四、避坑要点

错误/误区后果正确做法
整数除法误以为得到小数5/2 得到2使用5.0/25/2.0
==比较字符串内容比较地址,可能falseequals()比较内容
&&&混淆&左边false右边仍执行,可能产生副作用逻辑判断用&&、``
移位超过位数宽度1 << 33 等于 1 << 1(取模)了解规则:int移位只取低5位,long取低6位

五、面试高频考点

Q1:&&&的区别?

&&是短路与,左边false则右边不执行;&是非短路与,两边都执行。&也可用于位运算。

Q2:>>>>>的区别?

>>右移高位补符号位(正数补0,负数补1),>>>无符号右移高位始终补0。

Q3:a += ba = a + b 有区别吗?

复合赋值+=会隐式类型转换,例如byte a=1; a+=1;编译通过,而a=a+1需要强制转换。

六、练习题

  1. 计算(2 + 3 * 4) / 5 - 6 % 4的结果。
  2. 代码分析int a=10; a += a++ + ++a; 最后a的值是多少?(写出运算过程)
  3. 动手:用位运算判断一个整数是奇数还是偶数(最高效写法)。


📊 你的学习进度

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

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

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


👉 下一篇预告

《Java操作符有哪些?》

内容简介:运算符完整清单,字面量详解,优先级表格,结合性规则。

💡 学完这篇,你将全面掌握Java操作符,不再被复杂的表达式绕晕。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值