Java——break、continue和return

一、break

break语句用于立即终止最内层的循环或switch语句。它是一种控制流语句,能够在满足特定条件时跳出循环或结束switch块的执行。

1、在循环中使用

1)一般的 break

break语句可以用于forwhiledo-while循环中。当在循环中遇到break语句时,循环会立即终止,程序控制流将跳转到循环之后的第一条语句。

下面给出一个例子:

生成 1-100 之间的整数,当生成出 66 这个数字时循环停止。

public class Test {
	public static void main(String[] args) {
		int num = 0;
		while(true) {
			num = (int)(Math.random() * 100) + 1;
			System.out.print(num + " ");
			if(num == 66) {
				break;
			}
		}
	}
}

运行结果:

可以发现生成了 66 后循环就停止了。

又例如,输入密码,假设密码是 123,三次机会。如果输入正确则退出循环。

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int chance = 3;
		while(chance > 0) {//三次机会
			System.out.println("请输入密码");
			String password = input.next();

			if("123".equals(password)) {//判断输入的密码是否等于123
				System.out.println("密码正确");
				break;
			}
			chance--;
		}
	}
}

运行结果:

可以看到,虽然是第二次循环,但是我们输入了正确的密码,所以通过 break 退出了循环。

这里有一个新的方法:

String类的equals方法用于比较两个字符串的内容是否相同。具体来说,equals方法比较的是字符串中的每一个字符是否相同,并且字符的顺序也必须一致。如果两个字符串相等,则返回true,否则返回false

这里的形式最好写成这样:

"123".equals(password)

假设我们有一个变量password,它可能是null。如果直接调用password.equals("123"),而password恰好是null,会导致NullPointerException

String password = null;
if (password.equals("123")) { // 这里会抛出 NullPointerException
    // do something
}

为了避免这种潜在的异常,我们可以把常量字符串放在前面,这样即使passwordnull,也不会抛出异常:

String password = null;
if ("123".equals(password)) { // 这里不会抛出 NullPointerException
    // do something
}

2)带标签的 break

Java还支持带标签的break,用于终止指定标签的外层循环。这在嵌套循环中非常有用,可直接跳出多层循环。

outerLoop:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (j == 3) {
            break outerLoop; // 跳出 outerLoop 标签标记的循环
        }
        System.out.println("i: " + i + ", j: " + j);
    }
}

运行结果:

可以发现,在 j == 3 时,带标签的 break 直接终止了外层循环。

对于多层的循环,例如三层循环,也可以使用标签来标记第二层循环,使用带标签的 break 来终止第二层循环。这样也就是说可以使用带标签的 break 来终止任意一层循环。

对于这种形式,在实际开发中要尽量不用,实际上在实际开发中循环就最好不要超出三层。因为要保证较好的可读性。

2、在 switch 中使用

break语句在switch语句中非常常见,用于终止特定的case块。如果没有break语句,程序会继续执行后续的case块(即使这些块的条件不满足),直到遇到break语句或switch语句结束为止。这种行为称为“贯穿”或“fall-through”。

int day = 3;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    case 3:
        System.out.println("Wednesday");
        break;
    case 4:
        System.out.println("Thursday");
        break;
    case 5:
        System.out.println("Friday");
        break;
    default:
        System.out.println("Weekend");
        break;
}
// 输出: Wednesday

二、continue

1、一般的 continue

continue语句用于跳过当前循环迭代的剩余部分,并立即开始下一次循环迭代。它是一种控制流语句,可以用于forwhiledo-while循环中。continue语句有助于优化代码,减少嵌套层次,提高代码的可读性。

例子:

打印 1~6 和 10 ~ 20 这几个数字。

public class Test {
	public static void main(String[] args) {
		int i = 1;
		for(i = 1; i <= 20; i++) {
			if(i > 6 && i < 10) {
				continue;
			}
			System.out.print(i + " ");
		}
	}
}

运行结果:

2、带标签的 continue

Java还支持带标签的continue,用于跳过指定标签的外层循环的当前迭代,并立即开始该外层循环的下一次迭代。这在嵌套循环中非常有用,可以控制多层循环的流向。

示例:

public class Test {
	public static void main(String[] args) {
		outerLoop:
		for (int i = 1; i <= 3; i++) {
		    for (int j = 1; j <= 3; j++) {
		        if (j == 2) {
		            continue outerLoop; // 进入 outerLoop 标签标记的循环的下一次迭代
		        }
		        System.out.println("i: " + i + ", j: " + j);
		    }
		}
	}
}

运行结果:

可以发现当 j == 2 时就直接 continue 跳过标签标记的最外层循环的当前迭代开始下一次迭代了。

三、return

return语句用于从方法中返回一个值或直接终止方法的执行。它是控制方法执行流程的重要工具。以下是关于Java中return语句的详细介绍:

 return语句的作用

  • 返回值return语句可以将一个值从方法中返回给调用者。这个值的类型必须与方法声明中的返回类型一致。
  • 终止方法执行:当return语句被执行时,方法的执行立即结束,控制权返回到方法的调用者。

 return语句的形式

  • 无返回值(void方法):在void类型的方法中,return语句可以单独使用,用于提前终止方法。
  • 有返回值:在有返回类型的方法中,return语句必须返回一个与方法声明中返回类型一致的值。

如果 return 放到 main 方法中,则会终止程序。

例如:

public class Test {
	public static void main(String[] args) {
		for(int i = 0; i < 3; i++) {
			if(i == 1) {
				return;
			}
			System.out.println("i = " + i);
		}
	}
}

这里在 i == 1 时,main 方法会退出,也就是程序退出。所以运行结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值