Day_03【 流程控制语句】

今日内容
    流程控制语句
        顺序结构
        选择结构
            if语句
            switch语句
        循环结构
            for循环
            while循环
            do...while循环
            
            跳转语句
                break
                continue
                

顺序结构
    按照从上往下的顺序依次执行
    
选择结构
    if语句
        格式一:单if
            if(布尔表达式){
                // 语句体;
            }
            
            执行流程:
                首先判断布尔表达式的结果,如果是true,就执行if里面的语句体
                如果是false,就不执行。
        
        格式二:if...else...
            if(布尔表达式){
                // 语句体1    
            }else {
                // 语句体2;
            }
            
            执行流程:    
                首先判断布尔表达式的结果,如果是true,就执行if里面的语句体
                如果是false,就执行else里面的语句体
                
            二选一的情况,有且仅会有一个语句体会执行
            
        格式三:if...else if...else
            if(布尔表达式1){
                // 语句体1;
            }else if(布尔表达式2){
                // 语句体2;
            }else if(布尔表达式3){
                // 语句体3;
            }
            ...
            else {
                // 语句体n+1;
            }
            
            执行流程:
                首先执行if小括号中的布尔表达式1,如果为true,就执行语句体1,然后整个if语句结束;
                如果为false,继续判断else if小括号中的布尔表达式2,如果为true,就执行语句体2,然后整个if语句结束;
                如果为false,依次类推,继续判断else if小括号中的表达式
                最后如果所有的布尔表达式的结果都为false,这时才执行else里面的语句体n+1
                
            多选一的情况,有且仅会有一个语句体会执行
            
        注意事项:
            (1)if的小括号后面不要打分号(;)
                比如:
                    int num = -2;
                    // 判断是否是正数
                    if(num > 0);{    // 小括号后面不能打分号(;),编译虽然不会报错,但是if语句不再控制后面的大括号的语句体了
                        System.out.println(num+"是正数");
                    }
                        
            (2)if格式里面的大括号在某些情况下(if语句控制的是一行代码时)可以省略,一般不建议省略
                比如:
                    int num = 3;
                    if(num % 2==0)            // 此处省略的if的大括号,当它控制一行代码的时候没有问题
                        System.out.println("是偶数");
                    else 
                        System.out.println("是奇数");
                    
            (3)if的格式中的else语句可以省略,一般建议不省略,这是对其他情况的处理方式
                比如:
                    int x = -10;
                    int y = 0;
                    if (x >= 3) {
                        y = 2 * x + 1;
                    } else if (-1 < x && x < 3) {
                        y = 2 * x;
                    } else if(x <= -1) {
                        y = 2 * x - 1;
                    }        // else语句可以省略,对于格式来说没有问题
                    System.out.println("结果是:" + y);
    switch语句
        格式:
            switch(表达式){
                case 值1:
                    // 语句体1;
                    break;
                case 值2:
                    // 语句体2;
                    break;
                case 值3:
                    // 语句体3;
                    break;
                ...
                default:
                    // 语句体n+1;
                    break;
            }
            
        执行流程:    
            首先执行表达式,拿到表达式的结果从上往下依次匹配case后面的值,
            如果相等,就执行对应case里面的语句体,执行完之后结束整个switch语句
            如果不相等,继续匹配下面的case后面的值
            依次类推,如果相等就执行对应的case后面的语句体,执行完之后结束整个switch语句
            如果不相等,继续匹配下面的case后面的值
            当所有的case都不匹配的时候,最终会执行default里面的语句体,结束整个switch语句
            
            
        注意事项:
            (1)default语句的位置可以任意,可以在所有的case之上,也可以在所示的case之下,还可以在多个case之间
                default语句的位置在哪里,不影响程序的正常执行流程
                甚至default语句都可以省略,一般不建议省略default语句
            (2)switch后面的小括号中的表达式的结果的类型只能是
                byte short char int
                JDK1.5之后可以是枚举
                JDK1.7之后可以是String
            (3)case穿透问题
                switch语句结束的条件由两个:第一个是遇到break,第二个遇到switch的右大括号(})
                当break省略之后就容易出现case穿透问题
        
        课堂练习:
                根据switch的执行流程,分析以下程序的执行结果?
                public class Test {
                    public static void main(String[] args) {
                        int x = 2,y=3;
                        switch(x)
                        {
                            default:
                                y++;
                            case 3:
                                y++;
                                break;
                            case 4:
                                y++;
                        }
                        System.out.println("y="+y);
                    }
                }
                
循环结构
    for循环
        格式:
            for(初始化语句;布尔表达式;步进语句){
                循环体;
            }
        
        
    while循环
        标准格式:
            while(布尔表达式){
                循环体;
            }
        
        扩展格式:
            初始化语句;
            while(布尔表达式){
                循环体;
                步进语句;
            }
            
            
    do...while循环
        标准格式:
            do{
                循环体;
            }while(布尔表达式);
            
        扩展格式:
            初始化语句;
            do{
                循环体;
                步进语句;
            }while(布尔表达式);
            
        特点:
            不论布尔表达式结果是否为true,循环体一定至少会执行一次
            
    三种循环的区别
        1、do...while跟for和while的区别
            do...while不论布尔表达式结果是否为true,一定会至少执行一次循环体
            for和while如果布尔表达式结果为false,不会执行循环体
        2、for跟do...while和while的区别
            for中定义的初始化语句,只在for循环中有效,出了for循环消失了不可以用
            do...while和while循环里的初始化语句,即使出了循环也可以继续使用
            
        循环的选择:
            (1)循环的次数确定,选择的顺序: for > while > do...while
            (2)循环的次数不确定,选择的顺序: while > for > do...while
                while(true){
                    // 当满足条件,可以通过跳转语句,结束循环
                }
    
    跳转语句
        break
            使用场景:
                1、在switch语句中,用于退出switch语句
                2、在循环中,用于结束整个循环
                
            注:
                出了使用场景使用break会出错。
        continue
            使用场景:
                只能在循环中使用
                用于结束当次循环,继续下一次循环
                
        面试题:
            请说说break和continue的区别?
            
            (1)使用场景的区别
            (2)在循环中的作用的区别
            
    死循环
        1、
            while(true){
            
            }
            
        2、
            for(;;){
                
            }
        
不重点的内容
    (1)do...while循环
    (2)顺序结构

猜你喜欢

转载自blog.csdn.net/l531003231/article/details/81260236