流程控制语句学习
JAVASE学习五——控制语句
一.序言
-
流程控制语句的作用:流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
-
流程控制语句的分类:
- 顺序结构
- 分支结构(选择结构)
- 循环结构
-
流程控制的流程:
二.顺序结构
JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行顺序结构是最简单的算法结 构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它 是任何一个算法都离不开的一种基本算法结构。顺序结构在程序流程图中的体现就是用流程线将程序框自上而 地连接起来,按顺序执行算法步骤。
三.分支结构(选择结构)
分支结构会根据逻辑判断选择不同的路径执行代码。分支结构可分为:if选择和switch选择。其中if选择又分 为单分支,双分支,多分支。下面来具体介绍下。
1.if选择
if单分支
语法结构:
if(布尔表达式){
语句块;
}
含义:if语句对布尔表达式进行一次判定,若判定为真,则执行代码块中的语句,否则跳出该语 句。流程图如图所示:
实例代码:
int i = 10;
if(i>=0){
System.out.println("i>=0"); //输出
}
if-else双分支
语法结构:
if(布尔表达式){
语句块1;
}else{
语句块2;
}
含义:当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。流程图如图 所示:
实例代码:
if(i>=0){
//System.out.println("i>=0");
if(i==0){
System.out.println("i=0");
}else{
System.out.println("i>0");
}
}else{
System.out.println("i<0");
}
if-else if 多分支
语法结构:
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}……
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
含义:当布尔表达式1的值为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真 时,执行语句块2;否则,继续判断接下来的布尔表达式;当所有都为假时,则执行else中 的语句。流程图如图所示:
实例代码:根据随机值进行选择
int age = (int) (100 * Math.random());
System.out.print("年龄是" + age + ", 属于");
if (age < 15) {
System.out.println("儿童, 喜欢玩!");
} else if (age < 25) {
System.out.println("青年, 要学习!");
} else if (age < 45) {
System.out.println("中年, 要工作!");
} else if (age < 65) {
System.out.println("中老年, 要补钙!");
} else if (age < 85) {
System.out.println("老年, 多运动!");
} else {
System.out.println("老寿星, 古来稀!");
}
执行:这次随机到了77就依次从上到下判断,当进入到age<85这个表达式判断时发现是true则 进入这个代码块。
2.switch选择
语法结构:
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
… … … … …
[default:默认语句;]
}
含义:switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句或是 switch语句的末尾。如果表达式的值与任一case标签值都不匹配,则进入default(如存 在)。Ps:case标签必须是整数(byte,short,int,char)或枚举或字符串。switch多分支结构的流 程图如图所示:
实例代码:
public class VowelsAndConsonants {
public static void main(String[] args) {
char c = 'a';
int rand =(int) (26*Math.random());
char c2 = (char)(c+rand);
System.out.print(c2 + ": ");
switch (c2) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
System.out.println("元音"); break;
case 'y':
case 'w':
System.out.println("半元音"); break;
default:
System.out.println("辅音");
}
}
}
四.循环结构
循环结构就是重复地执行一些相同或类似的操作,循环结构的三要素是:循环变量初始值,循环体,循环中止条件。java中有while,do-while,for循环。
1.while循环
语法结构:
初始值
while (中止条件(布尔表达式)) {
循环体;
}
含义:在循环刚开始时,会计算一次"布尔表达式",若条件为真,执行循环体。对于后来的每一次额 外的循环,都会在开始前重新计算一次布尔表达式,所以循环体中应该有让循环趋于结束的语 句,否则就会出现死循环。while循环结构流程图如图所示:
代码实例:
public class WhileTest {
public static void main(String[] args) {
//while循环练习,依次输出1-10
int i = 1;
while(i<11){
System.out.println(i);
i++;
}
}
}
控制台输出:
2.do-while循环(了解即可,不常用)
语法结构:
初始值;
do {
循环体;
} while(布尔表达式) ;
含义:相比较于while循环,do-while循环最少会进行一次循环体,然后在通过布尔表达式判断条件是否 为真,若为真则继续执行循环体,若为假则结束循环体。流程图如图所示:
代码实例:
public class DoWhileTest {
public static void main(String[] args) {
//依次输出1-10
int i =1;
do{
System.out.println(i);
i++;
}while (i<11);
}
}
输出:
3.for循环
语法结构:
for (初始表达式; 布尔表达式; 迭代因子) {
循环体;
}
含义:for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。for循环在第一次反复 之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true, 则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行 迭代因子。
1.初始化部分设置循环变量的初值
2.条件判断部分为任意布尔表达式
3.迭代因子控制循环变量的增减
for循环在执行条件判定后,先执行的循环体部分,再执行步进。
for循环结构的流程图如图所示:
实例代码:
public class ForTest {
public static void main(String[] args) {
//输出1-10
for (int i =1;i<11;i++){
System.out.println(i);
}
}
}
输出:
4.补充
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环;continue用于中止某次循环,即跳过循环体中未执行的剩余代码部分,进行下一次是否循环判定;return用于直接结束当前方法。
System.out.println(i);
}
}
}
输出:
[外链图片转存中...(img-43PxMpRP-1657874324114)]
### 4.补充
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环;continue用于中止某次循环,即跳过循环体中未执行的剩余代码部分,进行下一次是否循环判定;return用于直接结束当前方法。