1. 概述
说白了,程序就是一系列指令的集合。控制结构(Control Structures)就是用来改变这些指令执行路径的编程构造块。
在本篇文章中,我们将深入探讨 Java 中常用的控制结构。
控制结构主要分为三类:
- 条件分支(Conditional Branches):用于在多个路径中做选择。Java 中主要有
if/else/else if
、三元运算符 和switch
。 - 循环(Loops):用于遍历多个值或对象,并重复执行某段代码。Java 中常见的有
for
、while
和do-while
。 - 跳转语句(Branching Statements):用于改变循环中的控制流程。Java 中主要有
break
和continue
。
2. if/else/else if
if/else
是最基础的控制结构之一,同时也是编程中做判断的基石。
虽然 if
可以单独使用,但最常见的场景是搭配 else
来进行二选一的逻辑处理:
if (count > 2) {
System.out.println("Count is higher than 2");
} else {
System.out.println("Count is lower or equal than 2");
}
✅ 理论上,我们可以无限嵌套或链式使用 if/else
,但这样会严重降低代码可读性,不推荐这么做。
在本文后续内容中,我们会介绍一些替代方案。
3. 三元运算符(Ternary Operator)
三元运算符是一种简洁的表达方式,功能类似于 if/else
。
还是上面那个例子:
if (count > 2) {
System.out.println("Count is higher than 2");
} else {
System.out.println("Count is lower or equal than 2");
}
可以改写为:
System.out.println(count > 2 ? "Count is higher than 2" : "Count is lower or equal than 2");
⚠️ 三元运算符可以让代码更简洁,但并不是所有 if/else
都适合用它替代。滥用会让代码变得难以维护。
4. switch
当我们有多个条件分支可供选择时,可以使用 switch
语句。
来看个简单例子:
int count = 3;
switch (count) {
case 0:
System.out.println("Count is equal to 0");
break;
case 1:
System.out.println("Count is equal to 1");
break;
default:
System.out.println("Count is either negative, or higher than 1");
break;
}
⚠️ 当有三个或更多 if/else
分支时,代码会变得难读,这时使用 switch
是一种不错的替代方案。
但是要注意,switch
对输入类型和作用域有限制,使用前务必了解清楚。
5. 循环(Loops)
当我们需要重复执行某段代码时,就可以使用循环。
下面是一个 for
和 while
循环的对比示例:
for (int i = 1; i <= 50; i++) {
methodToRepeat();
}
int whileCounter = 1;
while (whileCounter <= 50) {
methodToRepeat();
whileCounter++;
}
✅ 上面两个代码块都会调用 methodToRepeat()
方法 50 次。
6. break
当我们需要提前跳出循环时,就要用到 break
。
来看个例子:
List<String> names = getNameList();
String name = "John Doe";
int index = 0;
for ( ; index < names.length; index++) {
if (names[index].equals(name)) {
break;
}
}
这里我们是在一个列表中查找某个名字,一旦找到就立即跳出循环。
✅ break
的作用就是中断当前循环,提前退出,避免无意义的遍历。
7. continue
简单来说,continue
的作用就是跳过本次循环的剩余部分,直接进入下一轮循环。
示例代码如下:
List<String> names = getNameList();
String name = "John Doe";
String list = "";
for (int i = 0; i < names.length; i++) {
if (names[i].equals(name)) {
continue;
}
list += names[i];
}
在这个例子中,我们跳过了与目标名字相同的元素,避免将其加入结果字符串中。
⚠️ break
和 continue
在循环中确实很有用,但在实际开发中,很多时候可以用 return
或其他逻辑替代它们,让代码更清晰。
8. 总结
在这篇文章中,我们学习了 Java 中的控制结构,包括条件判断、循环以及跳转语句,并了解了它们在流程控制中的具体应用。
掌握这些结构,能让我们写出更清晰、更高效的代码。✅