美文网首页java基础入门
Java基础——流程控制语句

Java基础——流程控制语句

作者: 阿Q说代码 | 来源:发表于2019-01-08 10:35 被阅读1次

    昨天的概念有点多,对于刚接触java语言的小白来说,可能需要费些时间去理顺一下思绪。这些基础的概念也没必要死记硬背,在以后的学习中会大量用到,可以在具体情境中去理解其意义。好了,接下来阿Q将带你学习java中的流程控制语句,这部分需要大家好好的理解。

    流程控制语句

    ​ A:顺序结构 代码按照顺序从上往下执行。
    ​ B:选择结构 根据选择或者判断做出不同的执行。
    ​ a:判断结构 if语句
    ​ b:选择结构 switch语句
    ​ C:循环结构 把某些事情做很多次。

    判断结构

    (1)if语句:常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。
    (2)格式:
    ​ A:第一种格式

        if(条件表达式){
            语句体;
        }
    

    ​ 执行流程:
    ​ 如果条件表达式为true,就执行语句体;
    ​ 否则,什么都不执行。

    注意:

    ​ A:条件表达式:无论条件表达式做什么样的运算,结果必须是boolean类型。
    ​ B:if语句后面可以不写{},但是,如果这样的话,它就只能控制后面的一条语句,
    ​ 如果想控制多条,就必须加{}。

    推荐:无论是控制一条还是多条,请都加上{}。

    ​ C:在if语句的{}前面不要写分号,否则,会对程序的结果有影响。
    ​ 一般来说:出现{}的时候,就不会有分号,有分号的时候,不会有{}

    ​ B:第二种格式

        if(条件表达式)   {
            语句体1;
        }else{
            语句体2;
        }
    

    ​ 执行流程:
    ​ 如果条件表达式为true,就执行语句体1;
    ​ 否则,就执行语句体2;

    ​ 注意:
    ​ if的这第二种格式 有时候是可以和三目运算符互换的, 但是三目运算符
    ​ 条件表达式?结果1:结果2 ,这里面的结果1和结果2 必须是一个数值,而不能是一条语句,而if(表达式){}的大括号内里面什么语句都可以写,所以能用三目运算符的地方一定能用if(){}else{} ,能用if(){}else{}的就不一定能用三目运算符

    ​ C:第三种格式

        if(条件表达式1){
            语句体1;
        }else if(条件表达式2){
            语句体2;
        }   
        ...
        else{
            语句体n;
        }   
    

    ​ 执行流程:
    ​ 如果条件表达式1为true,就执行语句体1;
    ​ 如果条件表达式2为true,就执行语句体2;
    ​ ...
    ​ 否则,就执行语句体n;

    ​ 注意:
    ​ A:else后面是不能直接跟条件表达式。
    ​ B:最后的一个else可以不写,但是,一般建议加上。除非,你明确不需要。
    ​ C:if语句的第三种格式,一旦某个地方满足,if语句就不往下执行了。
    ​ D:每一种if语句其实都是一个整体,如果有地方执行了,其他的就不执行了。

    (3)if语句的嵌套:if语句里面的语句体又是一个if语句。

    选择结构

    (1)用于做选择使用的。一般用于几个常量(if主要是做范围的判断)的判断。
    ​ switch会把几个常量值直接加载到内存,在判断的时候,效率要比if高。所以,针对几个常量的判断,一般选择switch语句。也就是一般输入一个数据,判断你输入的数据是具体的哪个数的时候会用switch,但是开发中一般没人用。一般开发中能用都用if ,因为if 不仅能做常量的判断,也能做范围的判断。

    (2)switch语句的格式:

    switch(表达式){    
        case 值1:
            语句体1;
            break;
        case 值2:
            语句体2;
            break;
        case 值3:
            语句体3;
            break;
        ...
        default:
            语句体n;
            break;  
            
    }
    

    ​ A:针对格式的解释
    ​ ​​--switch:
    ​ 表达式最后的结果必须是:byte,short,int,char
    ​ JDK5以后可以是枚举(以后讲)
    ​ JDK7以后可以是字符串(后面讲)
    ​ --case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。
    ​ case后面的值是不能够重复的。
    ​ --break:switch语句执行到这里,就结束了。
    ​ --default:当所有的case和表达式都不匹配的时候,就走default的内容。它相当于if语句的else。
    ​ 一般不建议省略。
    ​ B:执行流程
    ​ 进入switch语句后,就会根据表达式的值去找对应的case值。
    ​ 如果最终没有找到,那么,就执行default的内容。​

    ​ C:注意事项:
    ​ ---a:case和default 在书写上是没有先后顺序的,但是执行上,会先去找对应的case值,找到了之后紧接着执行case后面的break 结束switch语句,如果没有找到case对应的值就会执行default,而这时候如果default写到了case上面,而且default后面还没有写break,就会顺序执行下来(也会执行case里面的语句)直到遇到一个break才结束。
    ​ ---b:default整体可以省略吗?
    ​ 可以省略不写,语法上是可以的,但是,一般不省略,它相当于if的else语句,
    ​ 可以控制所有的非正常情况。假如你非常明确没有非正常情况,那就省略。
    ​ ---c:default的位置可以放到前面吗?
    ​ 可以,语法允许。 但是如果放到前面的话 如果运行到default之后,如果default后面没有break还会继续去执行case里面的语句,所以一般我们把default放到最后面
    ​ ---d:break可以省略吗?
    ​ 放在最后面的default的 break 写不写都没有关系,语法也正确而且也不会影响程序结果。放在case语句中的break可以省略,因为语法是允许的的,但是可能会影响程序的运行结果。所以,一般不省略
    ​ ---e:switch语句什么时候结束呢?
    ​ 就是遇到break或者执行到程序的末尾。

    在此,给大家留一个课后练习题,可以根据键盘录入的日期(1-7),输出对应的星期日期。在做这个题目之前,先给大家讲一下Scanner的使用(这边大家先会使用即可,原理在后边会为大家具体总结)。

    Scanner的使用:
    (1)Scanner是JDK5以后设计的用来接收键盘录入数据使用的。
    (2)目前我们要通过键盘录入int类型数据,必须按照如下步骤:
    ​ A:导包:import java.util.Scanner;
    ​ B:创建对象,封装键盘录入
    ​ Scanner sc = new Scanner(System.in);
    ​ C:调用方法,获取数据
    ​ int number = sc.nextInt();

    循环结构

    (1)什么时候使用循环
    ​ 如果我们发现有很多重复的内容的时候,就该考虑使用循环改进代码。
    ​ 让我们代码看起来简洁了。
    (2)循环的组成
    ​ A:循环体,就是要做的事情。
    ​ B:初始化条件。一般定义的是一个初始变量
    ​ C:判断条件。用于控制循环的结束。
    ​ D:控制条件。用于控制变量的变化。一般都是一个++/--操作。
    (3)循环的分类:
    ​ A:for

    for(初始化条件;判断条件;控制条件){
        循环体;
    }
    

    ​ 执行流程:
    ​ a:先执行初始化条件;
    ​ b:执行判断条件
    ​ c:根据判断条件的返回值:
    ​ true:执行循环体。
    ​ false:就结束循环。
    ​ d:最后执行控制条件。返回到b继续。

    ​ B:while

    初始化条件;
    while(判断条件){
        循环体;
        控制条件;
    }
    


    ​ 执行流程:
    ​ a:先执行初始化条件;
    ​ b:执行判断条件
    ​ c:根据判断条件的返回值:
    ​ true:执行循环体。
    ​ false:就结束循环。
    ​ d:最后执行控制条件。返回到b继续。

    ​ C:do...while

    初始化条件;
    do{
        循环体;
        控制条件;
    }while(判断条件);
    

    ​ 执行流程:
    ​ a:先执行初始化条件;
    ​ b:执行循环体和控制条件;
    ​ c:执行判断条件
    ​ d:根据返回值
    ​ true:返回b。
    ​ false:就结束循环。

    ​ 注意:
    ​ a:一般使用for循环或者while循环。而且这两种循环是可以等价转换的。
    ​ b:do...while循环至少执行一次循环体。(因为当不满足条件的时候do...while循环也要执行一次所以不能和for循环和while循环完全等价)
    ​ c:初始化条件的变量在for结束,以后是不能使用的。而while结束后是可以使用的。
    ​ 如果这个变量仅仅是控制次数的,建议使用for循环。
    ​ 因为这样,for结束,这个变量就结束,效率高。
    ​ d:什么时候用for,什么时候用while?
    ​ 如果是控制范围,最好用for。
    ​ 如果范围不明确,用while。

    (4)死循环:就是无限循环,不会停止
    ​ while(true){...}
    ​ for(;;){...}

    经典例题:求100-999之间的所有水仙花数。水仙花数:一个三位数的每位数的立方和等于这个三位数的数,例如370 = 3的立方+7的立方+0的立方,那么370就是水仙花数。请在评论区完成该题目。

    break和continue

    (1)有些时候,我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字:break和continue
    (2)注意事项:
    ​ A:它们都必须在循环中(break还可以在switch中)。
    ​ B:如果单独使用break和continue,后面是不能有语句的。
    (3)区别:
    ​ A:break 结束当前循环。
    ​ B:continue 结束本次循环,进入下一次循环。
    (4)如何退出嵌套循环:用带标签的循环。
    ​ 格式:

    标签名1:for(){
        标签名2:for(){
            标签名3:if(){
                break 标签名1;
            }
        }
    }
    

    return

    ​ 我们可以在for循环里面写return用来结束,但是它的作用不是结束循环的,而是结束方法的,也就是说 某个方法遇到return 这个方法就中断了

    好了本节内容就先到这了,请在评论区完成本节的课后习题。想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

    相关文章

      网友评论

        本文标题:Java基础——流程控制语句

        本文链接:https://www.haomeiwen.com/subject/lmhvrqtx.html