if和switch分支

if和switch分支

一、if分支

1.1 简单if分支

知识点:if分支 之 简单的if
    语法结构:
        if(表达式){
            ...代码块...
        }
​
    理解:表达式的结果必须是boolean类型
        true - 执行代码块
        false- 跳过if分支,执行if以外的代码
​
​
public static void main(String[] args){
        if(false){
                System.out.println("...代码块...");
            }
            System.out.println("if以外的代码");
    }
​
​

1.2 复杂if分支

    案例一: 人类的健康值在20-25的数值内为健康
            (健康值算法为:体重(Kg) / 身高(米)的平方)
     public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入体重(Kg):");
            double weight = scan.nextDouble();
            System.out.println("请输入身高(M):");
            double height = scan.nextDouble();
​
            double health = weight/(height*height);
​
            if(health>20 && health<25){
                System.out.println("小护士说:\"健康,保持现有状态\"");
            }
        }

1.3 if...else...

语法结构: if(表达式){ ...代码块... }else{ ...else代码块... } 理解: 表达式的结果必须是boolean类型 true - 执行代码块 false- 执行else代码块

    public static void main(String[] args){
        if(false){
                System.out.println("...代码块...");
            }else{
                System.out.println("...else代码块...");
            }
            System.out.println("if分支以外的代码块");       
    }

小结:if...else...二选一的情况下使用

1.4 多重if分支

语法结构:

        if(表达式1){
            if(表达式4){
            ...代码块4...      
            }       
        }else if(表达式2){
            ...代码块2...
​
        }else if(表达式n){
            ...代码块n...
​
        }else{
            ...else代码块...
        }

理解: 从上往下判断表达式,哪个表达式先为true,就执行对应的代码块,如果都不为true就执行else代码块 表达式的结果必须是boolean类型 true - 执行代码块 false- 执行else代码块 注意:else代码块根据需求可写可不写,多重if分支在多选一的情况下使用

小结:if可以无限层嵌套 经验:嵌套最好不要超过3层,嵌套越多可读性越差

二、switch分支

语法结构:
        switch(表达式){
                case 值1:
                    ...代码块1...
                break;
                case 值2:
                    ...代码块2...
                break;
                case 值n:
                    ...代码块n...
                break;
                default:
                    ...default代码块...
                break;
            }

理解: 表达式的结果分别给值1、值2、值n比较,哪个相同就执行对应的代码块 如果都不相同就执行default代码块 default代码块根据需求可写可不写 break表示跳出当前分支语句

小结:switch是比较表达式的结果和case后面的值是否相同

面试题: case的值可以相同吗? 不允许相同

面试题:        
        default可以省略吗?
            可以省略(相当于多重if里的else{})
​
        break可以省略吗?
            可以
​
        default的位置一定要在最后吗?
            不一定,但是为了可读性最好放在最后
​
        表达式值的类型可以是什么?
            byte、short、int、char、String(JDK1.8)、枚举(JDK1.5)
​
        表达式值为什么只支持byte、short、int、char、String(JDK1.8)、枚举(JDK1.5)?
            switch底层只识别int值
            byte --> int 自动转型
            short -> int 自动转型
            int  --> int 直接使用
            char --> int 获取字符的码值
            String-> int 获取字符串的hash码(获取字符串中多个字符的码值 + 散列算法,算出来的结果就是hash值)
            枚举 --> int 获取枚举对象的编号

三、if和switch的区别

表达式的区别: if:boolean类型 switch:byte、short、int、char、String(JDK1.8)、枚举(JDK1.5)

应用场景的区别: if:判断区间、判断复杂条件 switch:判断单个值是否相同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值