3.流程控制语句
程序设计中规定的三种流程结构
顺序结构
- 程序从上到下逐行执行 , 中间没有任何判断和跳转
分支结构
- 根据条件 , 选择地执行某段代码
- 有
if...else和switch-case两种分支语句
循环结构
- 根据循环条件 , 重复的执行某段代码
- 有
for , while , do-while三种循环语句 - 补充:JDK5.0 提供了
foreach循环,方便的遍历集合、数组元素。
1. 循环结构
语句从上到下逐行执行
2. 分支语句
2.1 if - else 条件判断结构
格式:
1 | if(条件表达式) { |
==单分支条件判断 : if==
说明: 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)或布尔变量
执行流程
- 首先判断条件表达式看其结果是true还是false
- 如果是true就执行语句块
- 如果是false就不执行语句块
==双分支条件判断 :if … else==
格式:
1 | if(条件表达式) { |
==多分支条件判断 : if…else if…lese==
1 | if (条件表达式1) { |
说明:一旦条件表达式为true,则进入执行相应的语句块。执行完对应的语句块之后,就跳出当前结构。
==if…else嵌套==
在 if 的语句块中,或者是在else语句块中,又包含了另外一个条件判断(可以是单分支、双分支、多分支),就构成了嵌套结构。
执行特点:
(1)如果是嵌套在if语句块中的,只有当外部的if条件满足,才会去判断内部的条件
(2)如果是嵌套在else语句块中的,只有当外部的if条件不满足,进入else后,才会去判断内部的条件
2.2 switch-case选择结构
语法格式:
1 | switch(表达式){ |
执行流程
执行过程
第1步:根据switch中表达式的值,依次匹配各个case。如果表达式的值等于某个case中的常量值,则执行对应case中的执行语句。
第2步:执行完此case的执行语句以后
- 情况1:如果遇到break,则执行break并跳出当前的switch-case结构
- 情况2:如果没有遇到break,则会继续执行当前case之后的其它case中的执行语句。—->case穿透
- ……
- 直到遇到break关键字或执行完所有的case及default的执行语句,跳出当前的switch-case结构
==使用注意点:==
- switch(表达式)中表达式的值必须是这几种类型 : byte , short , char , int , 枚举(JDK 5.0) , String(JDK 7.0)
- case子句中的值必须是敞亮 , 所有case子句中的敞亮相互不相同
- 同一个switch语句 , 所有case子句中的敞亮值互不相同
- break语句用来执行完一个case分支后使程序跳出swtich语句块 , 如果没有break , 程序会顺序执行到switch结尾
- default子句是可选的 , 同时 , 位置也是灵活的 , 当没有匹配的case时 , 执行default语句
3. 循环语句
- 理解:循环语句具有在
某些条件满足的情况下,反复执行特定代码的功能。 循环结构分类
- for 循环
- while 循环
- do -while 循环
循环结构四要素
- 初始化部分
- 循环条件部分
- 循环体部分
- 迭代部分
3.1 for循环
语法格式
1 | for(初始化部分 ; 循环条件部分 ; 迭代部分) { |
说明:
- for(;;)中的两个;不能多也不能少
- ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
- ②循环条件部分为boolean类型表达式,当值为false时,退出循环
- ④可以有多个变量更新,用逗号分隔
3.2 while循环
语法格式 : 先判断再执行
1 | 初始化部分 |
3.3 do-while 循环
语法格式 : 先执行再判断
1 | 初始化部分; |
4. 关键字break 和 continue的使用
1 | 适用范围 在循环结构中使用的作用 相同点 |
此外,很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它,但使程序容易出错。Java中的break和continue是不同于goto的。
5. Scanner : 键盘输入功能的实现
键盘输入代码的四个步骤
- 导包
- 创建Scanner类型的对象
- 调用Scanner类的相关方法
- 释放资源
注意 : 需要根据相应的方法 , 来输入指定类型的值 , 入股输入的数据类型与要求的类型不匹配时 , 会报异常导致程序终止
键盘录入基本代码演示:
1 | // 键盘录入 |
6. 如何获取一个随机数
1、Math类的random()的调用,会返回一个[0,1)范围的一个double型值
2、Math.random() * 100 —-> [0,100) (int)(Math.random() * 100) —-> [0,99] (int)(Math.random() * 100) + 5 ——> [5,104]
3、 如何获取[a,b]范围内的随机整数呢?(int)(Math.random() * (b - a + 1)) + a
1 | // 随机数获取 |










