程序的执行顺序决定了程序的行为,掌握流程控制就是掌握程序的"大脑"。
目录
- [1. 条件判断:if-else](#1. 条件判断:if-else)
- [2. 条件判断:switch](#2. 条件判断:switch)
- [3. 循环:for循环](#3. 循环:for循环)
- [4. 循环:while循环](#4. 循环:while循环)
- [5. 循环控制:break和continue](#5. 循环控制:break和continue)
- [6. 实战案例](#6. 实战案例)
- [7. 用AI工具辅助学习](#7. 用AI工具辅助学习)
- [8. 总结](#8. 总结)
- 参考资源
1. 条件判断:if-else
1.1 基本if语句
当条件为true时执行代码块:
java
public class IfDemo {
public static void main(String[] args) {
int age = 20;
if (age >= 18) {
System.out.println("你已经成年了!");
}
System.out.println("程序继续执行...");
}
}
1.2 if-else语句
根据条件执行不同的代码块:
java
public class IfElseDemo {
public static void main(String[] args) {
int temperature = 35;
if (temperature >= 30) {
System.out.println("天气很热,开空调!");
} else {
System.out.println("天气凉爽,不用开空调。");
}
}
}
1.3 if-else if-else链
处理多个条件:
java
public class IfElseChainDemo {
public static void main(String[] args) {
int score = 85;
String grade;
if (score >= 90) {
grade = "优秀";
} else if (score >= 80) {
grade = "良好";
} else if (score >= 70) {
grade = "中等";
} else if (score >= 60) {
grade = "及格";
} else {
grade = "不及格";
}
System.out.println("成绩:" + score + "分,等级:" + grade);
}
}
输出:
成绩:85分,等级:良好
2. 条件判断:switch
当需要根据一个变量的不同值执行不同操作时,switch比if-else链更清晰:
2.1 基本switch语句
java
public class SwitchDemo {
public static void main(String[] args) {
int dayOfWeek = 3;
String dayName;
switch (dayOfWeek) {
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
case 3:
dayName = "星期三";
break;
case 4:
dayName = "星期四";
break;
case 5:
dayName = "星期五";
break;
case 6:
dayName = "星期六";
break;
case 7:
dayName = "星期日";
break;
default:
dayName = "无效日期";
break;
}
System.out.println("今天是:" + dayName);
}
}
输出:
今天是:星期三
2.2 现代switch表达式(Java 14+)
使用箭头语法,更简洁:
java
public class ModernSwitchDemo {
public static void main(String[] args) {
String dayType;
int day = 3;
// 箭头语法(Java 14+)
dayType = switch (day) {
case 1, 2, 3, 4, 5 -> "工作日";
case 6, 7 -> "周末";
default -> "无效";
};
System.out.println("星期" + day + "是" + dayType);
}
}
2.3 switch vs if-else
| 场景 | 推荐使用 |
|---|---|
判断范围(如 age >= 18) |
if-else |
判断固定值(如 day == 1) |
switch |
| 多个条件组合 | if-else |
| 枚举类型判断 | switch |
3. 循环:for循环
3.1 基本for循环
重复执行代码块,适合已知循环次数的场景:
java
public class ForLoopDemo {
public static void main(String[] args) {
// 基本语法:for (初始化; 条件; 更新) { 循环体 }
// 打印1到10
for (int i = 1; i <= 10; i++) {
System.out.print(i + " ");
}
System.out.println();
// 计算1到100的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1到100的和:" + sum); // 5050
// 打印九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "×" + i + "=" + (i * j) + "\t");
}
System.out.println();
}
}
}
3.2 增强for循环(for-each)
遍历数组或集合时更简洁:
java
public class ForEachDemo {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
// 增强for循环(for-each)
System.out.println("增强for循环:");
for (int num : numbers) {
System.out.print(num + " ");
}
System.out.println();
// 遍历字符串数组
String[] fruits = {"苹果", "香蕉", "橙子", "葡萄"};
for (String fruit : fruits) {
System.out.println("水果:" + fruit);
}
}
}
4. 循环:while循环
4.1 基本while循环
条件为true时重复执行,适合不确定循环次数的场景:
java
public class WhileLoopDemo {
public static void main(String[] args) {
// 打印1到10
int i = 1;
while (i <= 10) {
System.out.print(i + " ");
i++;
}
System.out.println();
}
}
4.2 do-while循环
至少执行一次循环体,再判断条件:
java
public class DoWhileDemo {
public static void main(String[] args) {
// 至少执行一次
int i = 10;
do {
System.out.println("i = " + i);
i++;
} while (i < 5); // 条件为false,但已经执行了一次
System.out.println("循环结束,i = " + i);
}
}
输出:
i = 10
循环结束,i = 11
4.3 while vs do-while
| 特性 | while | do-while |
|---|---|---|
| 执行次数 | 0次或多次 | 1次或多次 |
| 判断时机 | 循环前 | 循环后 |
| 适用场景 | 一般循环 | 至少执行一次 |
5. 循环控制:break和continue
5.1 break语句
立即终止循环:
java
public class BreakDemo {
public static void main(String[] args) {
// 查找第一个能被7整除的数
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0) {
System.out.println("第一个能被7整除的数是:" + i);
break; // 找到后立即退出循环
}
}
}
}
输出:
第一个能被7整除的数是:7
5.2 continue语句
跳过当前迭代,继续下一次循环:
java
public class ContinueDemo {
public static void main(String[] args) {
// 打印1到20中不能被3整除的数
System.out.println("1-20中不能被3整除的数:");
for (int i = 1; i <= 20; i++) {
if (i % 3 == 0) {
continue; // 跳过能被3整除的数
}
System.out.print(i + " ");
}
System.out.println();
}
}
输出:
1-20中不能被3整除的数:
1 2 4 5 7 8 10 11 13 14 16 17 19 20
6. 实战案例
6.1 判断闰年
java
public class LeapYearDemo {
public static void main(String[] args) {
int year = 2024;
boolean isLeapYear;
// 判断闰年规则:
// 1. 能被4整除但不能被100整除
// 2. 能被400整除
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
isLeapYear = true;
} else {
isLeapYear = false;
}
System.out.println(year + "年" + (isLeapYear ? "是" : "不是") + "闰年");
// 输出1-100年中的所有闰年
System.out.println("\n1-100年中的闰年:");
for (int y = 1; y <= 100; y++) {
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
System.out.print(y + " ");
}
}
System.out.println();
}
}
6.2 打印菱形图案
java
public class DiamondDemo {
public static void main(String[] args) {
int rows = 5;
// 上半部分(包括中间行)
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
// 下半部分
for (int i = rows - 1; i >= 1; i--) {
// 打印空格
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
输出:
*
***
*****
*******
*********
*******
*****
***
*
6.3 质数判断与打印
java
public class PrimeDemo {
public static void main(String[] args) {
// 判断一个数是否是质数
int number = 17;
boolean isPrime = true;
if (number < 2) {
isPrime = false;
} else {
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
isPrime = false;
break;
}
}
}
System.out.println(number + (isPrime ? "是" : "不是") + "质数");
// 打印1-100中的所有质数
System.out.println("\n1-100中的质数:");
for (int n = 2; n <= 100; n++) {
boolean prime = true;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
prime = false;
break;
}
}
if (prime) {
System.out.print(n + " ");
}
}
System.out.println();
}
}
7. 用AI工具辅助学习
7.1 让AI解释循环
提示词:
请解释这段代码的执行过程:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i + j == 5) {
System.out.println("i=" + i + ", j=" + j);
break;
}
}
}
8. 总结
本篇我们学习了:
✅ if-else :条件判断的基本形式
✅ switch :多值判断的清晰写法
✅ for循环 :已知次数的循环
✅ while循环 :不确定次数的循环
✅ do-while :至少执行一次的循环
✅ break/continue:循环控制
核心要点:
- 选择合适的循环结构:for适合已知次数,while适合条件判断
- break和continue是控制循环的利器,但要谨慎使用
- 避免无限循环,确保有退出条件
- 嵌套循环不要超过3层,保持代码可读性
下一篇预告: 《Java从零到熟练(四):面向对象基础》
- 理解面向对象编程思想
- 学习类和对象的概念
- 掌握封装、继承、多态
参考资源
下一篇: Java从零到熟练(四):面向对象基础