程序控制
字数
1578 字
阅读时间
7 分钟
Java程序控制是指在程序执行过程中如何控制代码的执行顺序和流程。
主要包括顺序结构、选择结构(分支结构)和循环结构。
一、顺序结构
按照代码书写的顺序依次执行每个语句
二、选择结构(分支结构)
选择结构用于根据条件决定执行哪一段代码。 Java中常用的分支结构有if
语句、if-else
语句、if-else if-else
语句和switch
语句。
if
语句
如果条件为真,则执行某个代码块。 :: details 示例代码
js
public class IfExample {
public static void main(String[] args) {
int number = 10;
if (number > 0) {
System.out.println("数字是正数"); // 如果number大于0,则执行此语句
}
}
}
:::
if-else
语句
如果条件为真,则执行第一个代码块;否则执行第二个代码块。 :: details 示例代码
js
public class IfElseExample {
public static void main(String[] args) {
int number = -5;
if (number > 0) {
System.out.println("数字是正数");
} else {
System.out.println("数字不是正数"); // 如果number不大于0,则执行此语句
}
}
}
:::
if-else if-else
语句
根据多个条件判断执行哪个代码块。 :: details 示例代码
js
public class IfElseIfElseExample {
public static void main(String[] args) {
int number = 0;
if (number > 0) {
System.out.println("数字是正数");
} else if (number < 0) {
System.out.println("数字是负数");
} else {
System.out.println("数字是零"); // 如果number既不大于0也不小于0,则执行此语句
}
}
}
:::
switch
语句
根据变量的值选择执行对应的代码块。
js
switch(表达式){
case 值1:
执行代码...;
break;
case 值2:
执行代码...;
break;
...
default:
执行代码n;
}
switch分支的执行流程
- 先执行表达式的值,然后拿着这个值去与case后的值进行匹配。
- 与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
- 如果全部case后的值与之匹配都是false,则执行default块的代码。
示例代码
js
public class SwitchExample {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三"); // 如果day等于3,则执行此语句
break;
default:
System.out.println("未知日期");
}
}
}
注意
case值不能重复,且只能是自变量,不能是变量 switch语句是通过匹配case语句来决定执行哪个代码。如果case重复,会导致逻辑混乱。
if和switch的比较
- if在功能上远远强大于switch
- 当前条件是区间的时候,建议使用if分支结构来实现
- 当前条件是一个一个值的比较时,建议使用switch更适合
循环结构
循环结构用于重复执行某段代码,直到满足特定条件为止。Java中常用的循环结构有for
循环、while
循环和do-while
循环。
for
控制一段代码反复执行好几次While
循环场景不确定的情况,或是在循环体内需要决定是否循环的情况(先判断后执行)do-while
先执行、后循环
for循环(已知循环次数)
js
for (初始化语句; 条件判断; 更新语句) {
// 循环体代码
}
public static void test1(){
//1.打印三行“hello world”
/**
* 计算机遇到for知道开启循环,然后立即执行int i = 0;
* 接着循环体执行 0 < 3,执行后输出第一行hello world
* 接着继续执行 1 < 3,执行后输出第二行hello world
* 接着继续执行 2 < 3,执行后输出第三行hello world
* 循环结束后,i = 3,3 < 3不成立,循环结束
*/
for (int i = 0; i < 3; i++);
System.out.println("hello world");
}
while循环(不确定循环次数,只要条件为真,就一直循环)
js
public class WhileLoopExample {
public static void main(String[] args) {
int count = 0;
while (count < 5) { // 当count小于5时继续循环
System.out.println("当前计数值: " + count); // 输出当前count的值
count++; // 每次循环后count自增1
}
}
}
do-while循环(类似于while
循环,但至少会执行一次循环体。)
js
public class DoWhileLoopExample {
public static void main(String[] args) {
int count = 0;
do {
System.out.println("当前计数值: " + count); // 至少执行一次
count++; // 每次循环后count自增1
} while (count < 5); // 当count小于5时继续循环
}
}
死循环(Infinite Loop)
当一个循环的终止条件永远不成立时,就会进入死循环,导致程序一直运行下去,无法退出 :: details 死循环示例
js
while (true) {
System.out.println("hello,world");
}
:::
循环嵌套
循环嵌套是指在一个循环体内包含另一个循环。常见的是 for 嵌套 for 或 while 嵌套 while 当外部循环每循环一次,内部循环会完全执行完一轮。
打印乘法表
js
public static void test1() {
//1.定义一个循环,控制打印几行
for (int i = 1; i <= 9; i++) {
//i = 1 ~ 9
//2.定义一个循环,控制每一行中的列信息
for (int j = 1; j <= i; j++) {
//3.在内部循环中,打印当前行数和列数的乘积
System.out.print(i + "*" + j + "=" + i * j + "\t");
}
//换行,准备打印下一行乘法表
System.out.println();
}
}
break&continue
break
跳出并结束当前所在循环的执行。continue
用于跳出当前循环的当次执行,直接进入循环的下一次执行。
示例
js
public static void test1() {
for (int i = 0; i < 5; i++) {
if (i == 3) {
break;//跳出并结束循环。
}
System.out.println(i);
}
}
public static void test2() {
for (int i = 0; i < 10; i++){
if (i == 5) {
continue;//跳过本次循环,继续下一次循环,只能在循环中使用
}
System.out.println(i);
}
}