Skip to content

程序控制

字数
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);  
    }  
}

贡献者

撰写