# Java 控制流程
控制流程是Java程序中的基本构建块,它决定了程序的执行路径。本章将详细介绍Java中的条件语句和循环结构。
# 条件语句
# if-else 语句
if-else语句用于根据条件执行不同的代码块。
// 基本if语句
int score = 85;
if (score >= 60) {
System.out.println("及格");
}
// if-else语句
if (score >= 90) {
System.out.println("优秀");
} else {
System.out.println("继续努力");
}
// if-else if-else语句
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
# switch 语句
switch语句用于多分支选择,适用于等值判断。
int day = 3;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
default:
System.out.println("其他日期");
}
// Java 12+ 新特性:switch表达式
String dayType = switch (day) {
case 1, 2, 3, 4, 5 -> "工作日";
case 6, 7 -> "周末";
default -> "无效日期";
};
# 循环结构
# for 循环
for循环用于已知循环次数的场景。
// 基本for循环
for (int i = 0; i < 5; i++) {
System.out.println("第" + (i + 1) + "次循环");
}
// 增强for循环(for-each)
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
// 多重for循环
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%d×%d=%d ", j, i, i * j);
}
System.out.println();
}
# while 循环
while循环用于不确定循环次数的场景。
// 基本while循环
int count = 0;
while (count < 5) {
System.out.println("count: " + count);
count++;
}
// 使用while循环读取输入
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String input = scanner.nextLine();
if (input.equals("quit")) {
break;
}
System.out.println("输入的内容:" + input);
}
# do-while 循环
do-while循环保证至少执行一次循环体。
int num = 1;
do {
System.out.println("num: " + num);
num *= 2;
} while (num <= 8);
# 控制语句
# break 语句
break用于跳出循环或switch语句。
// 在循环中使用break
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
// 带标签的break
outer: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
break outer;
}
System.out.printf("[%d,%d] ", i, j);
}
System.out.println();
}
# continue 语句
continue用于跳过当前循环的剩余部分。
// 跳过偶数
for (int i = 1; i <= 5; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
// 带标签的continue
outer: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) {
continue outer;
}
System.out.printf("[%d,%d] ", i, j);
}
}
# 最佳实践
选择合适的控制结构
- 对于等值判断,优先使用switch语句
- 对于区间判断,使用if-else语句
- 已知循环次数时使用for循环
- 不确定循环次数时使用while循环
避免深层嵌套
// 不推荐 if (condition1) { if (condition2) { if (condition3) { // 处理逻辑 } } } // 推荐 if (!condition1 || !condition2 || !condition3) { return; } // 处理逻辑
合理使用break和continue
- break用于完全跳出循环
- continue用于跳过当前迭代
- 避免过度使用,可能影响代码可读性
循环性能优化
// 不推荐 for (int i = 0; i < list.size(); i++) { // 每次都要调用size() } // 推荐 int size = list.size(); for (int i = 0; i < size; i++) { // size只调用一次 }
# 练习
编写程序判断一个年份是否为闰年
public boolean isLeapYear(int year) { return year % 4 == 0 && year % 100 != 0 || year % 400 == 0; }
使用循环打印九九乘法表
public void printMultiplicationTable() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.printf("%d×%d=%d ", j, i, i * j); } System.out.println(); } }
编写程序计算斐波那契数列的第n项
public int fibonacci(int n) { if (n <= 1) return n; int a = 0, b = 1; for (int i = 2; i <= n; i++) { int temp = a + b; a = b; b = temp; } return b; }
← Java 变量 Java 面向对象编程 →