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将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352