Java基础——流程控制语句

昨天的概念有点多,对于刚接触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基础——流程控制语句)