mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
558 字
2 分钟
Java控制流程语句详解
2026-02-07

控制流程语句是写代码最基础的东西,但说实话,很多人写了好几年Java也没搞明白switch的坑在哪。Java 14给switch来了个大变身,加了箭头语法和表达式,用起来舒服多了。这篇文章把各种控制流语句的用法和坑都理了一遍。

Java控制流程语句详解#

条件语句#

if / if-else#

最基础的条件判断,没什么好说的。有一点要注意:就算只有一行代码,也建议加大括号。不加大括号容易出bug,比如:

if (condition)
doSomething();
doSomethingElse(); // 这行不在if里,但缩进骗了你

switch 语句(传统写法)#

switch (value) {
case 1:
// 处理
break;
case 2:
// 处理
break;
default:
break;
}

别忘了break,否则会”穿透”到下一个case。这个特性有时候也能利用,比如多个case执行相同逻辑:

switch (day) {
case 1: case 2: case 3: case 4: case 5:
System.out.println("工作日");
break;
case 6: case 7:
System.out.println("周末");
break;
}

switch 表达式(Java 14+)#

Java 14引入了箭头语法和表达式,不用写break了,而且可以作为表达式赋值:

String result = switch (day) {
case 1, 2, 3, 4, 5 -> "工作日";
case 6, 7 -> "周末";
default -> "未知";
};

这个写法比传统switch清爽太多了,新项目建议直接用这个。

循环语句#

for 循环#

已知循环次数时用:

for (int i = 0; i < 10; i++) {
System.out.println(i);
}

增强型for循环(for-each)#

遍历数组或集合,代码更简洁:

int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}

while 循环#

未知循环次数时用:

int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}

do-while 循环#

至少执行一次循环体:

int i = 0;
do {
System.out.println(i);
i++;
} while (i < 10);

跳转语句#

  • break:终止循环或switch
  • continue:跳过当前循环的剩余部分,继续下一次
  • return:从方法返回

带标签的break/continue#

Java支持给循环加标签,然后跳出指定层级的循环:

outerLoop: for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i * j > 6) {
break outerLoop; // 直接跳出外层循环
}
}
}

这个用法有点冷门,但处理嵌套循环时确实好用。

常见陷阱#

  1. 死循环——循环条件永远为true,比如 while(true) 忘了加break
  2. switch缺break——导致穿透,逻辑不符合预期
  3. 浮点数做循环条件——精度问题可能导致意外行为
  4. 在循环里修改集合——用for-each遍历时删除元素会抛 ConcurrentModificationException

💡 实战贴士: 遍历集合时如果需要删除元素,用迭代器的 remove() 方法,或者用 Collection.removeIf()(Java 8+),后者更简洁。list.removeIf(item -> item.equals("xxx")); 一行搞定。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

部分信息可能已经过时

目录