【Java】分支结构

if

        根据判定条件的结果(真或假)决定执行某个分支的代码

if 的分支三种格式:

格式1: 

        if(条件表达式){

        语句体;

        }

格式2:

        if(条件表达式){

        语句体1;

        }esle{

        语句体2;

        }

格式3:

        if(条件表达式){

        语句体1;

        }else if(条件表达式){

        语句体2;

        }esle{

        语句体3;

        }

public class IfDemo {
    public static void main(String[] args) {
//      1.if(条件语句){ }
        int a = 20;
        if (a>=18){
            System.out.println("成年了");
        }

//      2.if(条件语句){ }else{ }
        if (a>=50){
            System.out.println("中年人");
        }else{
            System.out.println("成年人");
        }

//      3.if(条件语句){ }else if(条件语句){ }...else if(条件语句){ }else{}
        if (a>=0&&a<=11){
            System.out.println("小学生");
        }else if (a>=12&&a<=18){
            System.out.println("中学生");
        }else if (a>=19&&a<=24){
            System.out.println("大学生");
        }else{
            System.out.println("毕业了");
        }
    }
}

switch

        匹配条件取执行分支,适合做值匹配分支选择,结构和格式清晰

执行流程:

        1.先执行表达式的值,拿着这个值case的值进行匹配

        2.匹配哪个case的值true就执行哪个case块,遇到break跳出switch分支

        3.如果case后的值都不匹配则执行default代码

switch格式:

switch(表达式){

        case 值1:

        语句体1;

        break;

        case 值2:

        语句体2;

        break;

        case 值3:

        语句体3;

        break;

    default:

        语句体;

}

public class SwitchDemo {
    public static void main(String[] args) {
        String weekday = "周三";
        switch (weekday){
            case "周一":
                System.out.println("吃肯德基");
                break;
            case "周二":
                System.out.println("吃麦当劳");
                break;
            case "周三":
                System.out.println("吃必胜客");
                break;
            case "周四":
                System.out.println("吃德克士");
                break;
            case "周五":
                System.out.println("吃海底捞");
                break;
            case "周六":
                System.out.println("吃自助餐");
                break;
            case "周日":
                System.out.println("吃大骨头");
                break;
            default:
                System.out.println("时间输入有误");
        }
    }
}

switch分支注意事项:

        1.表达式类型只能是byteshortintchar,JDK5开始支持枚举,JDK7开始支持String,不支持doublefloatlong

        2.case给出的值不允许重复,且只能是字面量,不能是变量

        3.不要忘记写break,否则会出现穿透现象 


 注意:Java中小数不能精确运算(a/b→a*1.0/b)


switch穿透性

        如果代码执行没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何的值匹配),直到遇到break才跳出分支,这就是switch的穿透性

public class SwitchDemo {
    public static void main(String[] args) {
        int month = 1;
        switch (month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
           System.out.println("31天");
                break;
            case 2:
           System.out.println("闰年29天,非闰28天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
           System.out.println("30天");
                break;
                default:
           System.out.println("您输入有误!");
        }
    }
}

1.什么情况下会出现switch穿透现象?

        case块中没有写break

2.switch穿透性能解决什么问题?

        存在多个case分支功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值