第六章 Java中的控制语句

一、怎么接收用户键盘输入?

java.util.Scanner s = new java.util.Scanner(System.in);

// 接收整数
int i = s.nextInt()

// 接收字符串
String str = s.next();

二、控制语句

控制语句的出现可以让我们的程序具有逻辑性/条理性,可以使用控制语句来实现一个“业务”。

控制语句包括3类:选择语句、循环语句、转向语句。

1、选择语句(也可以叫做分支语句)

1)if语句

语法格式1:
        if(布尔表达式){
                java语句;
                java语句;
        }
这里的一个大括号{} 叫做一个分支。该语法的执行原理是如果布尔表达式的结果是true,则执行大括号中的程序,否则大括号中代码不执行。

语法格式2:
        if(布尔表达式){      // 分支1
                java语句;     
        }else{                    // 分支2
                java语句;
        }
执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。如果布尔表达式的结果是false,分支1不执行,执行分支2.以上的这个语句可以保证一定会有一个分支执行。
            
语法格式3:
        if(布尔表达式1){          // 分支1
                java语句;
        }else if(布尔表达式2){ // 分支2
                java语句;
        }else if(布尔表达式3){
                java语句;
        }else if(布尔表达式4){
                java语句;
        }....
执行原理:先判断“布尔表达式1”,如果“布尔表达式1”为true,则执行分支1,然后if语句结束了。
当“布尔表达式1”结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式2的结果是true,则执行分支2,然后整个if就结束了。从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,只要一个分支执行,整个if结束。
            
语法格式4:
        if(布尔表达式1){          // 分支1
                java语句;
        }else if(布尔表达式2){ // 分支2
                java语句;
        }else if(布尔表达式3){
               java语句;
        }else if(布尔表达式4){
                java语句;
        }else{
                java语句; // 以上条件没有一个成立的。这个else就执行了。
        }

注意:
①对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要有1个分支执行了,整个if语句就结束了。(对于1个完整的if语句来说的。)       

②以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。以上4种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个分支都不执行。第二种和第四种肯定会有1个分支执行。

③当分支当中“java语句;”只有1条,那么大括号{}可以省略,但为了可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意将大括号{}省略,你能看懂就行。)

④控制语句和控制语句之间是可以嵌套的,但是嵌套的时候我们最好一个语句一个语句进行分析,不要冗杂在一起分析。

2)switch语句

switch语句也是选择语句,也可以叫做分支语句。

语法格式:
        switch(值){
        case 值1:
                java语句;
                java语句;...
                break;
        case 值2:
                java语句;
                java语句;...
                break;
        case 值3:
                java语句;
                java语句;...
                break;
        default:
                java语句;
        }

以上是一个完整的switch语句,其中break;语句不是必须的。default分支也不是必须的。

switch语句支持的值有哪些?
支持int类型以及String类型。但一定要注意JDK的版本,JDK8之前不支持String类型,只支持int。在JDK8之后,switch语句开始支持字符串String类型。switch语句本质上是只支持int和String,但是byte,short,char也可以使用在switch语句当中,因为byte short char可以进行自动类型转换。

switch语句中“值”与“值1”、“值2”比较的时候会使用“==”进行比较。

switch语句的执行原理:
拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,然后遇到"break;"语句,switch语句就结束了。如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的java语句,然后遇到break;语句,switch结束。若所有的case都没有匹配成功,那么最后default分支会执行。

注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case穿透现象。

2、循环语句

在现实世界当中,有很多事情都是需要反复/重复的去做。对应到程序当中,如果有一块代码需要重复执行,此时为了减少代码量,我们使用循环语句。

1)for循环

语法格式:
        for(初始化表达式; 条件表达式; 更新表达式){
                循环体; // 循环体由java语句构成
                java语句;
                java语句;
                java语句;
                java语句;
                ....
        }

注意:
①初始化表达式最先执行,并且在整个循环中只执行一次。
②条件表达式结果必须是一个布尔类型,也就是:true或false

执行原理:
先执行初始化表达式,并且初始化表达式只执行1次。然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体。循环体结束之后,执行更新表达式。更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体。直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止。
更新表达式的作用是:更新表达式会更新某个变量的值,这样条件表达式的结果才有可能从true变成false,从而终止for循环的执行,如果缺少更新表达式,很有可能会导致死循环。

2)while循环

语法格式:
        while(布尔表达式){
                循环体;
        }

执行原理:
判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。

3)do..while..循环

语法格式:
        do {
                循环体;
        }while(布尔表达式);

注意:do..while循环最后的时候别漏掉“分号”

执行原理:
先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false循环结束。
对于do..while循环来说,循环体至少执行1次。循环体的执行次数是:1~n次。
对于while循环来说,循环体执行次数是:0~n次。

三、转向语句

1、break

break;语句比较特殊,特殊在break语句是一个单词成为一个完整的java语句,另外continue也是这样,他俩都是一个单词成为一条语句。

1)break语句的作用:

①switch语句当中,防止case穿透现象,用来终止switch。

②break;语句用在循环语句当中,用来终止离它最近的那个循环语句。

2)使用break;语句终止指定的循环

第一步:你需要给循环起一个名字,例如:
a:for(){
        b:for(){
                    
        }
}
第二步:终止:break a;

2、continue

1)continue语句的作用:

终止当前"本次"循环,直接进入下一次循环继续执行。
for(.......){
        if(......){ // 当这个条件成立时,执行continue语句
                continue; 
        }
        // 以上的continue一旦执行,以下代码不执行,直接执行更新表达式,进入下一次循环。
        code1;
        code2;
        code3;
        code4;
}

2)使用continue;语句结束指定循环的本次循环

第一步:你需要给循环起一个名字,例如:
a:for(){
        b:for(){
                    
        }
        code1;
        code2;
        code3;
}
第二步:结束本次:continue a;
 

3、return(这个目前先不需要学习,后面讲方法的时候会使用。)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值