(复习使用)Java基础03 - 控制结构

发布于:2023-01-04 ⋅ 阅读:(312) ⋅ 点赞:(0)

介绍

        程序的流程控制是什么?

        是用来决定程序是如何执行的,主要有三大流程控制语句:

        顺序控制、分支控制、循环控制

顺序控制

        程序从上往下准行的执行,中间没有任何的循环和跳转。

   

分支控制

        分支控制主要分为 if - else 语句构成的单分支、双分支、多分支、嵌套分支结构

        以及switch 分支结构

        首先我们来看 if、else 、else if 关键字够成的分支结构

单分支if

        基本语法:

     if(条件表达式){

                执行代码块;                // 里面输入执行该分支的逻辑

        }   

        使用说明:

               当条件表达式为 true 时,就会执行 {         } 里的语句,为false则不执行

                特别注意,如果{        }里只有一条语句,是可以不用{ }

                如下

if(true) System.out.println("进入单分支if语句");

                但最好还是加上{        },便于可读。                   

        对应的流程图:

双分支if else

        基本语法:

        if(条件表达式){

                执行代码块1;

        }else{

                执行代码块2;

        }

        使用说明:

                 当条件表达式为 true 时,就会执行代码块1的语句,为false则执行代码块2的语句

                依旧当{        }中只有一条语句{        }可以省略

         对应的流程图:

 多分支if-else if

        基本语法:

   if(条件表达式1){

                执行代码块1;

        }else if(条件表达式2){

                执行代码块2;

        }else if(条件表达式3){

                执行代码块3;

        }

        ... ...

        else{

                执行代码块n;

        }

        对于多分支值得说明两点

        第一:多分支可以没有else,但是如果没有else并且所有的条件表达式都不成立时,多分支结构的执行入口都没有,此时执行多分支结构下面的语句

        第二:如果有else,则当所有条件表达式都不成立时则默认执行else代码块

        

        对应流程图:

         其中对于表达式的判断,必须是表达式1为false,才能去判断表达式2

        如此循环直至找到对应的入口(如果没有入口则直接执行后续语句块)

        当然,一般来说多分支结构都会存在else的条件判断

嵌套分支

        基本语法:

        if(表达式1){

                if(表达式1-1){

                        if(表达式1-1-1){

                                

                        }else if(表达式1-1-2){

                                

                        }

                }else{

                        ...  if - else 

                }

        }

        总的来说,就是在判断结构中再加判断(里面加入的条件分支结构可以是任一种分支结构)

        打个比方,某个数字a        第一次判断是否大于20,如果成立则进一步判断是否大于50... ...

        嵌套循环:建议不要超过三层(超过三层可读性太差)

       对应流程图:

switch 分支结构 

        基本语法:

switch(表达式){

        case 常量1 :

        break;

        case 常量2 :

        break;

        ...

        default  语句块;

        break;

}

        switch分支结构使用要注意以下几点

        1. 表达式的数据类型应该与case后常量数据类型一致或者是可以自动转换的类型

        2. switch(表达式) 中表达式的返回值必须是byte、short、int、char、enum、String

        3. 如果没写break就会从匹配到的语句开始顺序执行(中间不进行判断直接穿透执行)

        流程图如下:

        从执行流程上来看 switch分支结构和 if - else if分支结构较为相似

        那么具体什么情况应该选取?

        1.  判断的具体数值不多,而且符合switch的六种类型建议switch

        2.  其他情况如 区间判断等 则用 if - else if更好

循环控制       

for循环

        基本语法:

        for(循环变量初始化 ; 循环条件 ; 循环变量迭代){

                循环操作

        }

        循环执行的流程:  

         使用细节和注意事项:

        1. for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略

        2. 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开

while 循环控制

        基本语法:

       循环变量初始化;

       while(循环条件){

                循环体;

                循环变量迭代;

        }

         本质上跟for循环没有区别,流程图略

do..while 循环控制

        基本语法:

        循环变量初始化;

        do{

                循环体;

                循环变量迭代;

        }while(循环条件);

        流程图:

        

                do-while循环跟while循环相对最大区别:

                        do-while循环至少执行了一次 ,是先执行,再判断

                        而while循环则是先判断再执行

                注意:do-while循环最后一个分号不能忘记

多重循环控制

        循环里面嵌套循环

        举例

for(int i = 0;i < 7; i++){        //外层循环7次
    for(int j = 0;j < 2; j++ ){   //内层循环2次
        // 循环体
    }
}

        但从实质上讲,内存循环就是外层循环的循环体

        只要当内存循环执行结束才能跳出外层的一层循环,继续进行下一轮循环

        

        建议:多重循环一般两层,最多不要超过三层

跳转控制语句

break

        说明:用来终止某个语句块的执行,一般用在switch分支结构 或 循环当中

        使用细节:

                break 如果出现在多层嵌套循环中,可以通过 标签 来指明推出那一层循环

               最后输出结果        j = 4, i = 3

continue

        说明:

                1. continue 用来结束本次循环,继续执行下次循环

                2. continue 出现在嵌套循环中也可以用过跟break - label的语法,去选择跳过那层循环

return

        说明:

                1. return一般使用在方法里面,表示跳出方法

                2. 如果在main方法中使用,则直接结束程序 

 

总结

思维导图(点击进入)