1. 算术运算符 + 自增自减陷阱?

运算符 含义 例子(a=10)
+ - * /加 减 乘 除a / 3 = 3(整数除法!)
%取余(模)a % 3 = 1(10÷3 余 1)
++ --自增 1 / 自减 1a++ 或 ++a(见陷阱)
+(字符串)字符串拼接"a" + 1 = "a1"

自增陷阱(面试常考):

i++ 和 ++i 的区别
int i = 5;
System.out.println(i++);    // 先取原值 5 再自增 → 输出 5(此时 i 已是 6)
System.out.println(i);      6

int j = 5;
System.out.println(++j);    // 先自增再取新值 → 输出 6
6

// 口诀:++ 在前"先加后用",++ 在后"先用后加"

🎯 重点

  • % 取余用途:判断奇偶(x%2==0 是偶数)、循环取下标
  • 字符串 + 任何东西 = 拼接成字符串:"1+1=" + (1+1) 注意括号

2. 比较运算符和逻辑运算符?

比较运算符(结果都是 boolean):==(等于)、!=(不等于)、>、<、>=、<=

逻辑运算符(连接多个 boolean):

运算符 含义 例子
&&且(两个都真才真)age >= 18 && age <= 60
||或(一个真就真)score < 60 || score > 100
!取反!isLogin
短路特性(面试点)
// && 左边为 false,右边不执行(短路)
int a = 0;
boolean r = (a != 0) && (10 / a > 1);   // 左边 false,右边不执行,不会除零报错
System.out.println(r);   false

// 如果不短路(& | 单符号),右边会执行 → 除零异常!
// 所以判断"不为空再操作"时用 &&:obj != null && obj.length() > 0

🎯 易错

  • == 是"相等比较",= 是"赋值"——写错是最高频 bug(if (a = 5) 编译都过不了)
  • 逻辑运算结果表:&& 一假则假;|| 一真则真

3. 三元运算符和运算优先级?

三元运算符:`条件 ? 值1 : 值2`——条件为真取 1,否则取 2。是 if-else 的简写。

三元运算符
int score = 85;
String result = score >= 60 ? "及格" : "不及格";
System.out.println(result);
及格

// 等价写法:
String r2;
if (score >= 60) { r2 = "及格"; } else { r2 = "不及格"; }

优先级速记(从高到低,括号永远最高):

括号 () > 自增 ++ > 乘除取余 * / % > 加减 + - > 比较 > == != > && > || > 赋值 =

优先级陷阱题(面试常见)
int a = 2, b = 3, c = 4;
System.out.println(a + b * c);        // 先乘后加:2 + 12 = 14
System.out.println((a + b) * c);      // 括号优先:(5) * 4 = 20
System.out.println(a + b > c);        // 先算 a+b=5,再比 5>4 = true
System.out.println(a + (b > c));      // 先算 b>c=false,再 a+false?报错!boolean 不能加

✍️ 练习题(先心算,再运行验证)

  • 1. 10 % 3 = ?(答案 1);7 % 2 = ?(答案 1,奇数)
  • 2. 下面输出什么:int i=3; System.out.println(i++ + ++i);(答案 8:3 + 5)
  • 3. 用三元运算符判断一个数是奇数还是偶数
  • 4. 下列结果:true && false || true = ?(答案 true,&& 先算)
  • 5. 写代码:判断某年是否为闰年(能被 4 整除且不能被 100 整除,或能被 400 整除):(y%4==0 && y%100!=0) || y%400==0
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。