[Java基础] 流程控制

本文深入讲解Java中的流程控制语句,包括if-else条件语句的正确使用方式及技巧、switch语句的语法特点及常见陷阱,以及如何利用break和continue有效管理循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 流程控制


if 条件语句

对于任何的 if else 语句,表面上看起来 else 后面没有条件,或者 else if 后面只有一个条件。但这不是真相:因为 else 的含义是“否则”——else 本身就是一个条件!else 的隐含条件是对前面条件取反。因此下面代码是等价的:

		int num = 35;

		// 形式一
		if (num > 60) {}
		else if (num > 40) {}
		else if (num > 20) {}

		// 形式二,等价于形式一,加上了else的隐含条件
		if (num > 60) {}
		else if ((num > 40) && !(num > 60)) {}
		else if ((num > 20) && !((num > 40) && !(num > 60)) && !(num > 60)) {}

使用 if else 语句有一条基本规则(不是必须的):总是优先处理范围更小的条件。

例如下面的代码,可以体现出遵守这条规则的好处:

		int num = 35;

		// 策略一
		if (num > 20 && num <= 40) {}
		else if (num > 40 && num <= 60) {}
		else if (num > 60) {}

		// 策略二,比起策略一,代码精简了很多,且易于阅读维护
		if (num > 60) {}
		else if (num > 40) {}
		else if (num > 20) {}


switch 语句

jdk 1.6 以及之前的版本中:支持基本数据类型及其对应的包装类 byte、short、char、int、Byte、Short、Character、Integer 和枚举类型(Enum)。

jdk 1.7 版本开始:除了支持之前的数据类型外,还支持 String 类型。


case 标签后面的 break; 语句有及其重要的意义!Java 的 switch 语句允许省略 case 后的 break; 语句,但这种省略可能引入一个陷阱!如下代码:

		int num = 1;
		switch (num) {
		case 1:
			System.out.println("case 1");
			// break;
		case 2:
			System.out.println("case 2");
			// break;
		default:
			System.out.println("default");
			// break;
		}
结果时三条打印语句都会输出,原因在于 switch 语句的运行流程:switch 语句先求出 expression 表达式的值,然后拿这个表达式和 case 标签后的值进行比较,一旦遇到相等的值,程序开始执行这个 case 标签后的代码,不再判断与后面 case、default 标签的条件是否匹配,除非遇到 break; 才会结束。


使用 break 结束循环

break 语句不仅可以结束其所在的循环,还可直接结束其外层循环。此时需要在 break 后紧跟一个标签,这个标签用于标识一个外层循环。Java 中的标签就是一个紧跟着英文冒号(:)的标识符,Java 中的标签只有放在循环语句之前才有作用。

		label: for (int i = 0; i < 100; i++) {
			for (int j = 0; j < 100; j++) {
				break label;
			}
		}

使用 continue 结束循环

continue 也可以紧跟一个标签,用于直接结束标签所标识循环的当次循环,重新开始下一次循环。

		label: for (int i = 0; i < 100; i++) {
			for (int j = 0; j < 100; j++) {
				continue label;
			}
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值