“计算机程序本质上是艺术的一种表现形式。”
前言
这里是分享 Java 相关内容的专刊,每日一更。
本期将为大家带来以下内容:
- 条件控制语句
- 循环控制语句
- 跳转控制语句
条件控制语句
条件控制语句用于 根据条件判断执行不同的代码块,是编程中最基本的流程控制结构。Java 主要提供以下条件控制语句:
if-else
语句- 多重
if-else
- 三元运算符(简化条件判断)
switch-case
语句
if-else
语句
if-else
语句根据给定的条件表达式是否为真来决定执行哪个代码块。其基本结构如下:
if (condition) {
// 当 condition 为 true 时执行
} else {
// 当 condition 为 false 时执行
}
示例:
int age = 18;
if (age >= 18) {
System.out.println("老年人");
} else {
System.out.println("年轻人");
}
多重 if-else
当有多个条件需要判断时,可以使用 else if
结构:
int score = 75;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
三元运算符(简化条件判断)
三元运算符(?:
)是 if-else
的简写,用于简单的条件判断:
int a = 5;
int b = 10;
int max = (a > b) ? a : b; // 如果 a 大于 b,则 max 等于 a,否则等于 b
switch-case
语句
switch-case
语句用于在多个值之间进行匹配,替代大量的 if-else
语句,通常适用于枚举类型、整数、字符串等类型的匹配。
switch (expression) {
case value1:
// 当 expression == value1 时执行
break;
case value2:
// 当 expression == value2 时执行
break;
default:
// 当没有匹配的值时执行
}
示例:
int day = 2;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
default:
System.out.println("未知的日期");
}
注意:
- 每个
case
后都需要break
,否则程序会继续执行后续的case
代码块,导致 “贯穿现象”。 switch
支持的数据类型包括int
、char
、String
和枚举类型(enum
),但不支持浮点数(float
和double
)。
循环控制语句
循环语句用于重复执行一段代码,直到满足退出条件为止。Java 提供了三种主要的循环结构:for
、while
和 do-while
。
for
循环
for
循环一般用于已知循环次数的场景,其结构包括初始化、条件判断和迭代更新部分:
for (initialization; condition; update) {
// 循环体
}
示例:
for (int i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
增强型 for
循环
增强型 for
循环(或称 for-each
)专门用于遍历数组或集合,它的语法更加简洁:
for (type variable : arrayOrCollection) {
// 对 variable 进行操作
}
示例:
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println(num);
}
while
循环
while
循环在每次循环开始时都会判断条件,条件为 true
时继续执行循环体,否则退出循环。
while (condition) {
// 循环体
}
示例:
int i = 0;
while (i < 5) {
System.out.println("i = " + i);
i++;
}
do-while
循环
do-while
循环与 while
的区别在于,它先执行循环体,然后再判断条件,即使条件不成立,循环体也会至少执行一次。
do {
// 循环体
} while (condition);
示例:
int i = 0;
do {
System.out.println("i = " + i);
i++;
} while (i < 5);
循环中的常见陷阱
死循环:当循环条件永远不成立或没有正确更新时,程序会进入死循环,导致无限执行。常见的死循环如下:
while (true) {
// 这种情况下,除非手动终止或内部有跳出条件,否则程序会无限循环
}
错误的更新条件:忘记更新循环变量或条件可能导致循环无法终止。例如:
int i = 0;
while (i < 5) {
System.out.println(i);
// 忘记更新 i,循环将一直打印 i = 0
}
跳转控制语句
跳转控制语句用于中断或调整循环的执行顺序,常见的有 break
、continue
和 return
。
break
语句
break
用于立即退出当前循环或 switch
语句。在循环中使用 break
会跳出当前的整个循环,而不是只跳过一次迭代。例如:
for (int i = 0; i < 5; i++) {
if (i == 3) {
break; // 当 i == 3 时跳出整个循环
}
System.out.println("i = " + i);
}
输出结果:
i = 0
i = 1
i = 2
标签 break
语句
在多层嵌套的循环中,普通 break
只能跳出最近的循环。如果需要跳出指定的外层循环,可以使用带标签的 break
。
outerLoop: for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("i = " + i + ", j = " + j);
if (j == 2) {
break outerLoop; // 跳出 outerLoop
}
}
}
输出结果:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
continue
语句
continue
用于跳过当前循环的剩余部分,直接开始下一次迭代。它不终止循环,而是跳到下一个迭代。例如:
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue; // 跳过 i == 3 时的输出
}
System.out.println("i = " + i);
}
输出结果:
i = 0
i = 1
i = 2
i = 4
return
语句
return
语句用于从方法中返回一个值,并结束方法的执行。在 void
方法中,return
可以提前终止方法的执行。例如:
public int add(int a, int b) {
return a + b; // 返回两个数的和
}
在 void
方法中:
public void checkNumber(int number) {
if (number < 0) {
System.out.println("负数");
return; // 提前终止方法
}
System.out.println("正数");
}
本期小知识
有时在 if
语句中可以通过连环赋值进行判断和操作,这是很多初学者忽略的小技巧:
int a, b;
if ((a = 5) == (b = 5)) {
System.out.println("a 和 b 相等,值都为: " + a);
}
这种方式在实际代码中不常见,但偶尔会作为一种简写,需注意代码可读性。