== != > < >= <=,结果是 boolean。&&(短路与)、||(短路或)、!(非)。a && b 中若 a 为 false,b 不再求值;a || b 同理。单分支
if (age >= 18) {
System.out.println("成年");
}
双分支 / 多分支
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else {
grade = 'C';
}
嵌套 if:一个 if 内再套 if,注意用大括号避免“悬挂 else”(else 总是与最近的未匹配 if 配对)。
常见错误:条件里误用 =(赋值)而非 ==(比较);条件判断字符串相等用 == 比较引用而非 equals。
switch (day) {
case 1: case 2: case 3:
name = "工作日";
break;
default:
name = "休息日";
}
break,否则会贯穿(fall-through)到下一个分支。break:String name = switch (day) {
case 1, 2, 3 -> "工作日";
default -> "休息日";
};
if 条件可用任意整数(非零为真),Java 严格要求 boolean,杜绝了 if (x = 1) 这类经典 bug。C 的 switch 同样会 fall-through。switch,用 if/elif/else 或(3.10+)match 结构;缩进代替大括号。switch 支持模式匹配,逐步向函数式语言的 match 靠拢。