流程控制¶
好消息:Java 的 if / for / while 和 JavaScript 几乎一模一样,前端人这部分可以极速迁移。
本章只讲差异点和易错点。
if / else if / else¶
语法和 JS 完全相同。唯一要记住的是:条件表达式必须是 boolean——Java 不会像 JS 那样做隐式类型转换。
switch¶
String day = "MON";
switch (day) {
case "MON": System.out.println("周一"); break; // 别忘 break,否则会"穿透"
case "SUN": System.out.println("周日"); break;
default: System.out.println("工作日");
}
switch 表达式在哪?
JS 有 switch 表达式,但 Java 8 没有(switch 表达式是 JDK 14 才有的)。
这里只能用"语句"。现代写法见《第五篇 · 从 JDK 8 到 17》。
for 循环¶
// 经典 for:和 JS 一样
for (int i = 0; i < 3; i++) { ... }
// 增强型 for(for-each):对应 JS 的 for...of,注意是冒号不是 of
int[] nums = {10, 20, 30};
for (int n : nums) {
System.out.println(n);
}
完整可运行示例¶
package com.javaglm.language.ch05;
/**
* 第 05 章 · 流程控制。
* 好消息:Java 的 if / for / while 和 JS 几乎一模一样,前端人零成本迁移。
* 重点差异:增强 for 循环写作 for (类型 变量 : 集合),对应 JS 的 for...of。
*/
public class ControlFlowDemo {
public static void main(String[] args) {
// 1. if / else if / else —— 和 JS 完全一致
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格"); // 命中这行
} else {
System.out.println("不及格");
}
// 2. switch —— 支持 String(JDK 8 可以);不要忘 break
String day = "MON";
switch (day) {
case "MON":
case "TUE":
case "WED":
case "THU":
case "FRI":
System.out.println("工作日"); // 命中
break;
case "SAT":
case "SUN":
System.out.println("周末");
break;
default:
System.out.println("未知");
}
// 3. 经典 for 循环
for (int i = 0; i < 3; i++) {
System.out.println("i = " + i);
}
// 4. 增强型 for(for-each)—— 对应 JS 的 for...of,语法是冒号不是 of
int[] nums = {10, 20, 30};
for (int n : nums) {
System.out.println("n = " + n);
}
// 5. while / do-while
int count = 0;
while (count < 2) {
System.out.println("while count = " + count);
count++;
}
// 6. break / continue(和 JS 一样)
for (int i = 0; i < 5; i++) {
if (i == 2) {
continue; // 跳过 2
}
if (i == 4) {
break; // 到 4 直接结束
}
System.out.println("loop i = " + i); // 打印 0, 1, 3
}
}
}
前端人对照¶
| JS | Java | 备注 |
|---|---|---|
for (const x of arr) |
for (int x : arr) |
冒号 : |
for (const k in obj) |
没有直接等价 | 遍历对象用 Map 的方法 |
if (count) {} |
if (count > 0) {} |
Java 不隐式转布尔 |
switch 表达式 |
JDK 8 没有 | 新特性章讲 |
:octicons-arrow-left-16: 上一章:基本类型与变量 | 下一章:方法与数组