Java程序流程控制

发布于:2022-12-02 ⋅ 阅读:(327) ⋅ 点赞:(0)

概述

Java中流程控制语句可以用来控制程序的执行顺序,它能将具有一定功能的逻辑模块区分开,其中包括顺序结构、分支结构和循环结构。

顺序结构

程序由上至下逐行地执行,中间没有任何判断和跳转。

// 从上到下依次执行
        int num1 = 1;
//        int num2 = 2 + num3; // 报错
        int num3 = 3;

分支语句

if - else if - ... - else

        if (true) {
            // 执行语句块1
        } else if (true) {
            // 执行语句块2
        } else if (true) {
            // 执行语句块3 
            // ...
        } else {
            // 执行语句块n
        }

  •  条件表达式必须是布尔表达式或者布尔变量;
  • 分支结构可以嵌套使用;
  • else if 语句可以是多个,else只有一个,且根据情况可以省略;

练习题

小明参加《Java基础》考试,如果成绩为100分则奖励100积分,成绩在 [90 - 99] 之间则奖励50积分,在 [70 - 89] 之间奖励20积分,剩下不奖励积分。

    public void scoreTest(int score) {
        if (score == 100) {
            System.out.println("奖励100积分~");
        } else if (score >= 90 && score <= 99) {
            System.out.println("奖励50积分~");
        } else if (score >= 70 && score <= 89) {
            System.out.println("奖励20积分~");
        } else {
            System.out.println("啥也没有~");
        }
    }

switch - case

        switch (表达式) {
            case 常量1:
                语句1;
                break;
            case 常量2:
                语句2;
                break;
            case 常量3:
                语句3;
                break;
                。。。
            default:
                语句n
        }

  • 表达式必须是byte、short、char、int、枚举(jdk5.0)、String(jdk7.0)中的一种;
  • case子句中的值必须是常量,不能是变量或是不确定的值;
  • 同一个switch语句,所有case子句中的常量值互不相同;
  • break是在执行完一个case分支后使程序跳出switch块,否则会按顺序执行到末尾;
  • default是可选的;

练习题

对于传入的参数进行判断,若等于hello,则打印你好,若等于world,则打印世界,否则打印你好世界。

    public void helloTest(String str) {
        switch (str) {
            case "hello":
                System.out.println("hello~");
                break;
            case "world":
                System.out.println("world~");
                break;
            default:
                System.out.println("hello world~");
        }
    }

讲解完以上两种分支结构后我们对它们进行一个总结:

对于少量能穷举出来的case,我们推荐用switch语句,效率会稍微高点。【听说GTA中就有个活生生的例子】if使用的范围更广,能用switch-case的地方都可以改为if - else,反之则不成立。

循环结构

for循环

        for (int i = 0; i < 5; i++) {
            System.out.println("循环体...");
        }

我们来简单的分析下上面这段代码

int i = 0 是初始化部分 【1】

i < 5 是循环条件 【2】

i++ 是迭代条件 【4】

打印部分是循环体 【3】


执行过程:【1】- 【2】-【3】-【4】-【2】-【3】-【4】-【。。。】-【2】

说明:

  • 【2】中部分为boolean类型表达式,为false时退出循环
  • 【1】可以声明多个初始化变量,但类型需一致
  • 【4】可以有多个变量更新,用逗号分隔

while循环

        int i = 0;
        while (i < 5) {
            System.out.println("循环体...");
            i++;
        }

while循环和for循环类似,但要特别注意的一点是注意迭代部分的i++,如果忘记声明循环将不能结束,导致死循环。

do - while循环

        int n = 0;
        do {
            System.out.println("循环体...");
            n++;
        } while (n < 5);

do - while循环相较于前两种循环来说最大特点就是它至少会执行一次循环体。

三个关键字

break

用于终止某个语句块的执行【默认当前,指定语句块需配合label标签】。

continue

用于跳过当次循环体的执行,继续执行下一次。

return

终止所有循环,直接返回结果。 

说明:

  • break只能用于switch和循环语句中,continue只能用于循环语句中;
  • break、continue之后不能有其它的语句【当前语句块中】;
  • 方法返回值不为 void 则程序必须有return语句;

综合小案例 

循环打印 “hello world + 当前 i 的值”,i 初始化为0,若 i == 3则跳过当次循环,当 i == 5则终止循环并打印“hello China”,方法返回值为 “你好,中国!”。

    public static void main(String[] args) {
        String print = print();
        System.out.println(print);
    }

    private static String print() {
        int i = 0;
        while (i < 10) {
            if (i == 3) {
                i++;
                continue;
            } else if (i == 5) {
                break;
            }
            System.out.println("hello world: " + i);
            i++;
        }
        System.out.println("hello China");
        return "你好,中国";
    }

hello world: 0
hello world: 1
hello world: 2
hello world: 4
hello China
你好,中国

上述采用的是while循环实现,大家也可以试试for循环和do - while循环。

写在最后

在学习完Java程序流程控制后可以尝试去做一些小练习,例如打印九九乘法表等等。在工作中程序的流程控制必不可少,灵活使用关键字可以使我们的程序性能更加高效。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到