跳转语句
改变程序执行流程的三种语句:break、continue 和 return。
break 语句
终止 switch 语句或循环语句。
在循环中使用
java
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (arr[i][j] == target) {
System.out.println("找到:" + i + ", " + j);
break; // 跳出内层循环
}
}
}使用标签跳出外层循环
java
outer:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i == 2 && j == 2) {
break outer; // 跳出外层循环
}
System.out.println("(" + i + "," + j + ")");
}
}
// 输出:(0,0) (0,1) (0,2) (0,3) (0,4)
// (1,0) (1,1) (1,2) (1,3) (1,4)
// (2,0) (2,1) ← 遇到 (2,2) 条件后跳出整个外层循环continue 语句
跳过当前循环的剩余语句,继续下一次循环。
基本示例
java
// 打印 1-100 的奇数
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
System.out.println(i);
}在嵌套循环中使用
java
// 跳过某个条件的处理
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i == j) {
continue; // 跳过 i == j 的情况
}
System.out.println("(" + i + "," + j + ")");
}
}
// 使用标签跳到外层循环的下一次迭代
outer:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i == 2 && j == 2) {
continue outer; // 跳到外层循环的下一次迭代
}
System.out.println("(" + i + "," + j + ")");
}
}return 语句
终止方法的执行,并返回值(如果有)。
基本用法
java
public int add(int a, int b) {
return a + b; // 返回结果并结束方法
}
public void printUntilZero() {
Scanner scanner = new Scanner(System.in);
while (true) {
int num = scanner.nextInt();
if (num == 0) {
return; // 结束方法
}
System.out.println("输入了:" + num);
}
}提前返回
用卫语句处理边界情况,保持主逻辑清晰。
java
public String getGrade(int score) {
if (score < 0) {
return "无效分数";
}
if (score > 100) {
return "无效分数";
}
if (score >= 90) {
return "A";
} else if (score >= 80) {
return "B";
}
// ...
}三者对比
| 语句 | 作用范围 | 说明 |
|---|---|---|
| break | switch、循环 | 终止 switch 或跳出当前循环 |
| continue | 循环 | 跳过本次循环,继续下一次 |
| return | 方法 | 结束方法执行,返回值 |
break vs continue
java
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println("使用 break:");
for (int num : arr) {
if (num == 5) {
break; // 找到 5 后终止循环
}
System.out.print(num + " "); // 输出:1 2 3 4
}
System.out.println("\n使用 continue:");
for (int num : arr) {
if (num % 2 == 0) {
continue; // 跳过偶数,继续下一次
}
System.out.print(num + " "); // 输出:1 3 5 7 9
}break vs return
java
// break:结束循环,继续执行后面的代码
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
System.out.println("循环后的代码"); // 这行会执行
// return:结束整个方法
public void test() {
for (int i = 0; i < 10; i++) {
if (i == 5) {
return; // 结束整个方法
}
System.out.println(i);
}
System.out.println("方法中的后续代码"); // 这行不会执行
}最佳实践
使用卫语句减少嵌套
java
// ❌ 嵌套过深
public void process(Order order) {
if (order != null) {
if (order.getItems() != null) {
if (order.getItems().size() > 0) {
for (Item item : order.getItems()) {
if (item.isValid()) {
// 处理逻辑
}
}
}
}
}
}
// ✅ 使用卫语句
public void process(Order order) {
if (order == null) return;
if (order.getItems() == null) return;
if (order.getItems().isEmpty()) return;
for (Item item : order.getItems()) {
if (!item.isValid()) continue;
// 处理逻辑
}
}循环中用 return 查找
java
public int findIndex(List<String> list, String target) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(target)) {
return i; // 找到后立即返回
}
}
return -1; // 未找到
}注意事项
break 只跳出一层循环
java
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
break; // 只跳出内层循环
}
System.out.println("(" + i + "," + j + ")");
}
}
// 输出:(0,0) (0,1) (0,2) (1,0) (2,0) (2,1) (2,2)return 在 try-finally 中
finally 块无论是否 return 都会执行。
java
public int test() {
try {
return 1;
} finally {
System.out.println("finally 执行");
}
}
// 输出:finally 执行
// 返回值:1