[JavaSE] 逻辑控制(if、switch、代码风格、习惯讲解)

举报
Nick_Bears 发表于 2022/04/03 00:15:53 2022/04/03
【摘要】 疫情当前,大家要做好防护哦。 带好口罩了嘛? 那么大家跟着Nick来学习今天的知识吧!

 目录

顺序结构

分支结构     

if 语句

🔶 基本语法形式1

🔶 基本语法形式2

🔶 基本语法形式3 多分支的情况

📝 代码示例1: 判定数字是奇数还是偶数

📝 代码示例2: 判定数字是正数还是负数

📝 代码示例3: 判定某一年份是否是闰年

🔻 注意事项1 悬垂 else 问题

🔻 注意事项2 代码风格问题

🔻 注意事项3 分号问题

switch 语句

💬 基本语法

📝 代码示例: 根据 day 的值输出星期

🔻 注意事项1 break 不要遗漏

🔻 注意事项2 条件限定

🔻 注意事项3 表达问题

🔻 注意事项4 外观问题

   



    

   

疫情当前,大家要做好防护哦。

带好口罩了嘛?

那么大家跟着Nick来学习今天的知识吧!

   

顺序结构

🔴 顺序结构比较简单,按照代码书写的顺序一行一行执行。

      

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
// 运行结果
aaa
bbb
ccc

   

🔴 如果调整代码的书写顺序, 则执行顺序也发生变化

       

分支结构     

if 语句

    

🔶 基本语法形式1

        if(布尔表达式){
            //条件满足时执行代码
        }

   

🔶 基本语法形式2


        if(布尔表达式){
            //条件满足时执行代码
        }else{
            //条件不满足时执行代码
        }

   

🔶 基本语法形式3 多分支的情况

        if(布尔表达式){
            //条件满足时执行代码
        }else if(布尔表达式){
            //条件满足时执行代码
        }else{
            //条件都不满足时执行代码
        }

   

📝 代码示例1: 判定一个数字是奇数还是偶数

        int num = 10;
        if (num % 2 == 0) {
            System.out.println("num 是偶数");
        } else {
            System.out.println("num 是奇数");
        }

   

📝 代码示例2: 判定一个数字是正数还是负数

        int num = 10;
        if (num > 0) {
            System.out.println("num 是正数");
        } else if (num < 0) {
            System.out.println("num 是负数");
        } else {
            System.out.println("num 是 0");
        }

   

📝 代码示例3: 判定某一年份是否是闰年

        int year = 2000;
        if (year % 100 == 0) {
            // 判定世纪闰年
            if (year % 400 == 0) {
                System.out.println("是闰年");
            } else {
                System.out.println("不是闰年");
            }
        } else {
            // 普通闰年
            if (year % 4 == 0) {
                System.out.println("是闰年");
            } else {
                System.out.println("不是闰年");
            }
        }

   

🔻 注意事项1 悬垂 else 问题

        int x = 10;
        int y = 10;
        if (x == 10)
            if (y == 10)
                System.out.println("aaa");
            else
                System.out.println("bbb");

   

🔵 if / else 语句中可以不加 大括号 。 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配. 但是实际开发中我们 不建议 这么写。最好加上大括号。

   

🔻 注意事项2 代码风格问题

// 风格1
        int x = 10;
        if (x == 10) {
            // 满足条件
        } else {
            // 不满足条件
        }

// 风格2
        int x = 10;
        if (x == 10)
        {
            // 满足条件
        }
        else
        {
            // 不满足条件
        }

   

🔵 虽然两种方式都是合法的, 但是 Java 中更推荐使用风格1, { 放在 if / else 同一行。

   

🔻 注意事项3 分号问题

        int x = 20;
        if (x == 10); {
            System.out.println("Nick");
        }
// 运行结果
        Nick

    

🔵 此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块。

    


switch 语句

💬 基本语法

        switch(整数|枚举|字符|字符串){
            case 内容1 : {
                内容满足时执行语句;
                [break;]
            }
            case 内容2 : {
                内容满足时执行语句;
                [break;]
            }
       ...
            default:{
                内容都不满足时执行语句;
                [break;]
            }
        }

   

📝 代码示例: 根据 day 的值输出星期

        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("输入有误");
                break;
        }

   

🔴 根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句. 如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句。我们建议一个 switch 语句最好都要带上 default。

   

🔻 注意事项1 break 不要遗漏

否则会失去 "多分支选择" 的效果

    

        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");
                // break;
            case 2:
                System.out.println("星期二");
                break;
        }
        // 运行结果
        星期一
        星期二

    

🔴 我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果。

   

🔻 注意事项2 条件限定

switch 中的值只能是 整数|枚举|字符|字符串

   

        double num = 1.0;
        switch(num) {
            case 1.0:
                System.out.println("hehe");
                break;
            case 2.0:
                System.out.println("haha");
                break;
        }
// 编译出错
Test.java:4: 错误: 不兼容的类型: 从double转换到int可能会有损失switch(num) {
                                                               ^
1 个错误

   

🔻 注意事项3 表达问题

switch 不能表达复杂的条件

    

// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示. 
        if (num > 10 && num < 20) {
            System.out.println("hehe");
        }

   

🔻 注意事项4 外观问题

switch 虽然支持嵌套, 但是很丑

   

        int x = 1;
        int y = 1;
        switch(x) {
            case 1:
                switch(y) {
                    case 1:
                        System.out.println("hehe");
                        break;
                }
                break;
            case 2:
                System.out.println("haha");
                break;
        }

   

🔴 代码的美观程度也是一个重要的标准,毕竟这是看脸的世界


   

综上, 我们发现, switch 的使用局限性是比较大的

今天Nick有些累了

明天一起来学习while,for

还有do while吧~

家人们,晚安哦~

     

   



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。