三种结构
顺序结构
顺序结构是程序执行的默认方式,代码按照从上到下的顺序逐行执行。这种结构适用于简单的线性流程任务,如数据初始化、连续计算等。局限性在于无法处理条件分支或重复操作。
典型应用场景包括变量声明赋值、方法调用序列。例如用户注册流程:先验证输入格式,再检查用户名唯一性,最后保存数据库,这些步骤必须按固定顺序执行。
选择结构
if语句系列
单分支if处理单一条件判断,当条件为true时执行特定代码块。双分支if-else在两种互斥情况中选择执行路径,如判断用户是否VIP以提供不同服务。
多分支if-else if适合处理连续范围判断,如成绩等级划分。嵌套if用于复合条件,需注意避免超过3层嵌套以保持可读性。短路特性指在逻辑运算符(&&、||)中,若前半部分已能确定结果则不再计算后半部分。
switch语句
基于表达式值进行跳转,支持byte/short/int/char/String/enum类型。相比if链式判断,switch在多重分支时效率更高。Java 12引入的箭头语法允许直接返回值:
String dayType = switch(day) {
case "Mon", "Tue" -> "Weekday";
default -> "Weekend";
};
需使用break防止case穿透,或利用新语法避免此问题。枚举类型配合switch能实现类型安全的模式匹配。
循环结构
for循环
经典形式包含初始化、条件判断和迭代三部分:
for(int i=0; i<10; i++) {
System.out.println(i);
}
增强for循环简化集合遍历:
for(String item : collection) {
System.out.println(item);
}
while循环
适用于不确定循环次数的场景,如读取文件直到末尾:
while(reader.hasNext()) {
process(reader.next());
}
do-while循环
保证至少执行一次,适合菜单展示等场景:
do {
showMenu();
input = getInput();
} while(!isValid(input));
循环控制
break可跳出整个循环,continue跳过当前迭代。带标签的break支持跳出多层嵌套循环。避免在循环内修改迭代器指向的集合。
最佳实践
- 保持方法短小,单个方法内控制结构不超过3层嵌套
- 优先使用return/continue替代深层嵌套
- 循环内部避免耗时操作,如数据库查询
- 使用final修饰不会改变的循环变量
- 复杂条件提取为布尔方法提升可读性
逻辑控制是算法实现的基础,需结合设计模式如策略模式处理复杂分支。后续可学习异常处理补充流程控制能力。