专栏系列文章
Java必备基础知识:输入与输出-CSDN博客
超详细进制转换(二进制、八进制、十进制、十六进制)!-CSDN博客
Java必备基础知识:各种运算符的理解及运用-CSDN博客
文章目录
前言
一、顺序结构
二、分支结构(if-else,switch)
1、单分支( if 语句)
2、双分支( if - else 语句)
3、多分支(多重 if - else 或 switch )
三、循环结构(for,while,do while)
1、for 循环
2、while 循环
3、do while 循环
四、break
五、continue
六、return
总结
这篇文章将带大家系统梳理 Java 控制结构知识,从基础的分支、循环,到流程控制关键字,用清晰示例和通俗讲解,帮你筑牢编程逻辑根基。
顺序结构是程序中最基本的结构,程序会按照代码的书写顺序,从上到下、逐行执行每条语句,直到程序结束。就像我们做事情需要一步一步来一样,程序也是如此。这个不必多说,我们看一下例子就能理解。
// 顺序结构
public class Main {
public static void main(String[] args) {
// 第1步:定义变量
int a = 5;
int b = 3;
// 第2步:计算两数之和
int sum = a + b;
// 第3步:打印结果
System.out.println("a + b = " + sum);
// 第4步:修改变量的值
a = 10;
b = 20;
// 第5步:再次计算两数之和
sum = a + b;
// 第6步:再次打印结果
System.out.println("修改后 a + b = " + sum);
}
}
分支结构允许程序根据条件判断结果选择不同的执行路径,就像走路时遇到岔路口,需要根据路标选择方向一样。Java 中主要有两种分支语句:if-else
和 switch
。根据可选路径的数量,可分为单分支、双分支、多分支三种。
只有一个执行路径,当条件成立时执行某段代码,不成立则跳过。语法如下:
if (条件表达式) {
// 条件为true时执行的代码块
}
有两个执行路径,条件成立时走一条路,不成立时走另一条路,必选其一。语法如下:
if (条件表达式) {
// 条件为true时执行的代码块
} else {
// 条件为false时执行的代码块
}
有多个执行路径,根据不同条件匹配不同的代码块,最终只会执行其中一个(或默认路径)。
(1)用 if-else if-else
实现多分支
if (条件1) {
// 条件1为true时执行
} else if (条件2) {
// 条件1为false、条件2为true时执行
} else if (条件3) {
// 前两个条件都为false、条件3为true时执行
} else {
// 所有条件都为false时执行(可选)
}
(2) 用 switch
实现多分支(值匹配型)
switch (变量/表达式) {
case 值1:
...// 变量等于值1时执行的代码块
break; // 退出switch,避免继续执行下一个case
case 值2:
...// 变量等于值2时执行的代码块
break;
default:
...// 变量不匹配任何case时执行的代码块(可选)
}
注意事项:
1、同一个switch中的每个 case 值必须唯一。
2、case可以合并:多个连续的 case
可以共用一个代码块(省略 break
)。
int month = 2;
switch (month) {
// month值为1、3、5、7、8、10、12中的某一个时,执行同一个代码块
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("30天");
break;
case 2:
System.out.println("28或29天");
break;
default:
System.out.println("无效月份");
}
3、 default
块用于处理所有未匹配的情况,可以在任意位置,但是注意break的使用。
4、case
中直接使用枚举常量名,无需指定枚举类名。
enum Color { RED, GREEN, BLUE }
Color c = Color.RED;
switch (c) {
case RED: // 直接写RED即可
System.out.println("红色");
break;
case GREEN:
System.out.println("绿色");
break;
case BLUE:
System.out.println("蓝色");
break;
}
分支结构的代码示例如下:
public class BranchStructureExample {
public static void main(String[] args) {
// 单分支示例:判断年龄是否成年
int age = 18;
if (age >= 18) {
System.out.println("已成年,可以独立出行");
}
// 双分支示例:判断一个数是正数还是负数
int num = -5;
if (num > 0) {
System.out.println("这是一个正数");
} else {
System.out.println("这是一个非正数(负数或0)");
}
// 多分支示例1:if-else if-else判断成绩等级
int score = 85;
if (score >= 90) {
System.out.println("等级:A");
} else if (score >= 80) {
System.out.println("等级:B");
} else if (score >= 60) {
System.out.println("等级:C");
} else {
System.out.println("等级:D(不及格)");
}
// 多分支示例2:switch判断星期几的计划
int week = 5;
switch (week) {
case 1:
System.out.println("周一:背单词");
break;
case 5:
System.out.println("周五:写周报");
break;
case 6:
case 7:
System.out.println("周末:休息");
break;
default:
System.out.println("工作日:正常上班");
}
}
}
for 循环适用于已知循环次数的场景,语法:
for (初始化表达式; 条件表达式; 迭代表达式) {
// 循环体(重复执行的代码)
}
执行流程:
int i = 0
)。true
则执行循环体,为 false
则结束循环。i++
),然后回到步骤 2。示例:打印 1 到 5 的数字
for (int i = 1; i <= 5; i++) {
System.out.println(i); // 输出:1 2 3 4 5
}
while 循环根据条件判断是否继续循环,适用于未知循环次数。语法:
while (条件表达式) {
// 循环体
}
执行流程:
true
则执行循环体,为 false
则结束。注意:需确保循环体内有修改条件的代码,否则会死循环。
示例:计算 1 到 100 的和
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i; // 累加i到sum
i++; // 避免死循环
}
System.out.println("总和:" + sum); // 输出:5050
do while 循环与 while
类似,不同的是 do while 循环先执行后判断,所以循环体至少执行一次。语法:
do {
// 循环体
} while (条件表达式);
执行流程:
true
则继续循环,为 false
则结束。示例:用户输入验证
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
int num;
do {
System.out.print("请输入一个正数:");
num = scanner.nextInt();
} while (num <= 0); // 若输入非正数,继续循环
System.out.println("输入的正数是:" + num);
break 语句能够立即终止当前所在的循环或 switch
语句,跳出该结构,执行后续代码。
注意事项:
break
只会终止当前所在的内层循环,外层循环不受影响。break
只能出现在循环(for
/while
/do-while
)或 switch
中,在循环前添加 标签名:
然后使用 break 标签名;
跳出该循环。
示例:
// 嵌套循环
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break; // 只终止内层循环(j的循环)
}
System.out.print(j + " "); // 输出:1 1
}
}
// 带标签的用法(跳出外层循环)
outer: // 定义标签
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break outer; // 终止带标签的外层循环
}
System.out.print(j + " "); // 输出:1
}
}
continue 语句能跳过当前循环的剩余代码,直接进入下一次循环迭代。其用法和 break 一致。这里做一个简单示例:
// 在 while 循环中的用法
int i = 0;
while (i < 5) {
i++;
if (i == 3) {
continue; // 跳过后续代码,回到循环条件判断
}
System.out.print(i + " "); // 输出:1 2 4 5
}
// 带标签的用法(跳到外层循环的下一次迭代)
outer:
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
continue outer; // 跳到外层循环的下一次迭代
}
System.out.print(j + " "); // 输出:1 1
}
}
return 语句能终止当前方法的执行。如果有返回值给,返回结果调用者,否则直接结束整个方法。此处不再赘述,给个例子简单理解:
public int calculateSum() {
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i > 5) {
return sum; // 返回当前sum的值(1+2+3+4+5=15)
}
sum += i;
}
return sum;
}
最后,我们再来直观对比总结一下:
关键字 | 作用范围 | 对当前结构的影响 | 后续代码执行情况 |
---|---|---|---|
break |
循环或 switch |
完全终止当前结构 | 继续执行结构后的代码 |
continue |
循环 | 跳过本次循环剩余代码 | 继续执行下一次循环迭代 |
return |
整个方法 | 终止整个方法 | 方法立即结束,返回调用者 |
示例对比:
public void testKeywords() {
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break; // 输出:1 2
// continue; // 输出:1 2 4 5
// return; // 输出:1 2
}
System.out.print(i + " ");
}
System.out.println("循环后代码"); // break/continue会执行,return不会执行
}
以上就是本文的全部内容啦!Java 控制结构是程序逻辑实现的核心工具。分支结构(if-else
、switch
)让程序能依据条件应对多样场景;循环结构(for
、while
、do-while
)助力高效完成重复任务;break
、continue
、return
则为流程调控提供灵活手段。掌握这些控制结构,能让你编写的程序逻辑清晰。