Java语法基础学习笔记04-选择结构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

程序都是按照代码语句,一句一句按照顺序执行下去的,但是有时候我们需要执行一些判断操作,设定条件,当条件满足,就执行某些的语句,不满足的时候执行另一些语句。
这里记录if-else和switch-case选择结构。


一、if条件语句

语法格式:
if( 布尔表达式 ){
语句1;
}
当布尔表达式为 true 时,执行语句1
当布尔表达式为 false 时,跳过 { } 内的语句

if(10 > 5){    // true
	System.out.println("Hello"); //hello 
}

注意 if()后面的{}括号可以省略,但是这样的话,当布尔表达式满足条件只会执行 if();后面紧跟的第一条语句。如果不满足,就跳过if()后面紧跟的第一条语句,继续往下执行。但是不容易阅读,而且可能干扰程序的逻辑执行,实际开发不这样写

public static void main(String[] args) {
        if (10 < 5)
            System.out.println("heiheiehi");
        System.out.println("我");
    }

if

二、if-else语句

语法格式:
if( 布尔表达式1){
语句块1;
}else {
语句块2;
}
执行流程:先判断布尔表达式1的值,为true就执行语句块1;若为false就执行语句块2.

 public static void main(String[] args) {
        int a = 10;
        int b = 5;
        if (a > b) {
            System.out.println("a > b");
        } else {
            System.out.println("a < b");
        }
    }

在这里插入图片描述
注意:如果 if()括号里面的是boolean变量在运算,一定要注意 = 和 == 的区别

		boolean a = true;
        boolean b = false;
        if (a == b) {
            System.out.println("==是比较运算符");
        } else {
            System.out.println("两者不相等");  //打印输出这一句
        }

在这里插入图片描述
如果if()括号里面的布尔变量使用 = ,就会扰乱判断逻辑,影响最后的输出结果。

 public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        if (b = a) {
            System.out.println("=是赋值运算符");
        } else {
            System.out.println("两者不相等");
        }
    }

在这里插入图片描述

三、if-else-if…语句

多层if-else-if语句,一定要搞清楚他的执行流程,每一层布尔表达式的条件对下一层的影响。
在这里插入图片描述
if-else-if 下一层的判断条件是隐含了满足上一层判断条件为false的情况。

	public static void main(String[] args) {
        int score = 79;
        if (score >= 90 && score <= 100) {
            System.out.println("优秀");
        } else if (score >= 80) {  //隐含了score不可能>=90了
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }

在这里插入图片描述

四、switch多分支语句

语法格式:
switch(用于判断的参数){
case 常量表达式1 :
语句1;
break;
case 常量表达式2 :
语句2;
break;
case 常量表达式n :
语句n;
break;
default :
语句1;
break;
}
执行流程:
在这里插入图片描述
举例代码:
需求1:给一个数字编号,判断是周几

public static void main(String[] args) {
        int week = 5;
        switch (week) {
            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;
        }
    }

2、需求:给一个数字编号,判断是不是工作日
改进上面的代码

 public static void main(String[] args) {
        int week = 5;
        switch (week) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("是工作日");
                break;
            case 6:
            case 7:
                System.out.println("是周末");
                break;
            default:
                System.out.println("编号非法!");
                break;
        }
    }

在这里插入图片描述
switch多分支语句case后的表达式的数据类型包括6种:byte,short,char,int4种整型类型以及String字符串类型和枚举类型。
在这里插入图片描述

如果其中的某个case满足条件得到执行,执行完该常量表达式下语句体,如若不加break;结束,会有一个穿透的效果,代码会逐行执行,直到遇到下一个break才会结束。
如果所有的case常量表达式都不满足就会执行default里面的语句。
default位置可以不放在末尾,如果default在最后,里面的break语句也可以省略,但是为了便于阅读和维护,一般写在最后。


总结

主要注意 if( ) { } 格式里面的分号不要写错位置,避免打乱原本的执行逻辑,if里面也可以再嵌套if-else,注意实际需求的逻辑就行了。
if-else-if语句:上层if判断条件对下层if判断条件的隐含条件。
switch-case语句只能对常量进行判断,不能对取值范围进行判断。
switch-case注意每一个case结束后要加break语句,不加break语句会有穿透效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值