1. 流程控制简介
² 程序控制结构是指以某种顺序执行的一系列动作,用于解决某个问题。程序控制结构是通过控制语句来实现对程序流程的选择、循环、转向和返回等。
² 程序控制结构包括:顺序结构、分支结构、循环结构三大结构,如图:
2. 顺序结构
1.1 释义
所谓顺序结构程序就是指按语句出现的先后顺序执行的程序结构,是程序中最简单的结构。编程语言并不提供专门的控制流语句来表达顺序控制结构,而是用程序语句的自然排列顺序来表达。计算机按此顺序逐条执行语句,当一条语句执行完毕,控制自动转到下一条语句。
2.2 语句格式
int a = 11;
int b = 2;
int c = a+b;
System.out.println("a+b的结果为:"+c);
3. 分支结构
3.1释义
分支结构又称为选择结构。当程序执行到控制分支的语句时,首先判断条件,根据条件表达式的值选择相应的语句执行(放弃另一部分语句的执行)。分支结构包括单分支、双分支和多分支三种形式。
3.2 语句格式
1) if语句格式(单分支结构)
if(布尔表达式){
语句块;
}
说明:当语句块为一条语句时,大括号可以省略。只有布尔表达式为true时,才进入if语句中。
2) if-else语句格式(双分支结构)
if(布尔表达式){
语句块;//if分支
}else{
语句块;//else分支
}
3) if-else if-else语句格式(多分支结构)
if(布尔表达式){
语句块;
}else if(布尔表达式){
语句块;
}else{
语句块;
}
演示示例
public class TestIfElse{
public static void main(String[] args) {
int age = 22;
if (age % 2 != 0) {
System.out.println("奇数");
}
//建议只有一条语句也加入大括号
if (age % 2 == 0){
System.out.println("是偶数");
}
if ( age >0 && age <=18){
System.out.println("未成年");
}
if (age > 18 && age <=40) {
System.out.println("青年");
}
if (age > 40 && age<=50) {
System.out.println("中年");
}
//这种方法效率会好一些,如果年龄为5岁
//以下代码只判断一次就可以,而上面的代码会判断多次
if ( age >0 && age <=18){
System.out.println("未成年");
}else if (age > 18 && age <=40) {
System.out.println("青年");
} else if (age > 40&& age<=50) {
System.out.println("中年");
}
}
}
4) switch...case
switch也称为多重分支,具体格式如下
switch (表达式) {
case 值1:
语句
break;
case 值2:
语句
break;
default:
语句
break;
}
说明:
² 表达式的值只能为:char、byte、short、int类型、String、enum类型,其它类型均非法
² break语句可以省略,但会出现switch穿透
² default语句也可以省略,一般不建议省略,并且放置在最后
演示示例
public class TestSwitchCase {
public static void main(String[] args) {
String type = "dog";
switch(type) {
case "cat":
System.out.println("喵");
break;//注意break
case "dog":
System.out.println("旺");
break;
case "sheep":
System.out.println("咩");
break;
default:
System.out.println("哇!");
}
System.out.println("switch执行结束!");
}
}
4. 循环结构
4.1 释义
² 当程序执行到循环控制语句时,根据循环判定条件对一组语句重复执行多次。循环结构可以看成是一个条件判断语句和一个向回转向语句的组合。另外,循环结构的三个要素:循环变量、循环体和循环终止条件。
² while、do…while、for三种循环。
4.2 语句格式
1) while语句格式
while(布尔表达式) {
循环体// 一条或多条语句
}
说明:
² 先执行布尔表达式,若为false,则while语句结束 ;
² 若为true,则执行循环体,然后再执行布尔表达式的结果为true还是false,如此反复执行,直接返回结果false,while语句结束。
演示示例
public class TestWhile {
public static void main(String[] args) {
int i = 1;
//注意死循环问题
while(i<=5) {
System.out.println(i);
i++;
}
}
}
2) do while格式
do {
循环体
}while(条件判断表达式);
注意:
² while括号后必须写分号
² do while与while非常相似,不同点在于do while先执行循环体,也就是说不管条件符不符合,循环体至少执行一次
演示示例
public class TestDoWhile {
public static void main(String[] args) {
int i = 1;
do{
System.out.println(i);
i++;
}while(i<=5); //注意分号
}
}
3) for语句格式
for(表达式1;表达式2; 表达式3) {
循环体 //一条或多条语句
}
执行过程:
首先执行”表达式1“,再执行”条件表达式“,如果”表达式2”结果为false,则for循环结束;如果”表达式2”的结果为true,则执行”循环体”;再执行”表达式3”,再执行”表达式2”,判断结果真假,直到”表达式2为false”结束。
演示示例
public class TestFor {
public static void main(String[] args) {
for (int i=1; i<=5; i++) {
System.out.println(i);
}
}
}
4.3 break和continue跳转语句
1) break语句
强制退出某个循环体,结束循环语句的执行
public class TestBreak {
public static void main(String[] args) {
for (int i=1; i<=10; i++) {
System.out.println(i);
if (i == 5) {
break; //会跳出当前循环
}
}
//break跳到这里
}
}
2) continue语句
终止某次循环过程,跳过continue语下方未执行的代码,开始下一步循环过程
public class TestContinue {
public static void main(String[] args) {
for (int i=1; i<=10; i++) {
if (i == 5) {
continue; //会跳该次循环,跳到i++代码处
}
System.out.println(i);
}
}
}
4.4 控制语句解释
Java语言的程序控制语句
² 条件判断语句:if语句、switch语句
² 循环执行语句:do while语句、while语句、for语句
² 跳转语句:break语句、continue语句、return语句
控制语句类型 | 关键字 | 作用 |
选择结构语句 | if、if else、else if switch | 通过开关机制,选择要执行的代码 |
循环结构语句 | for while do while | 通过循序机制,反复执行相同的代码段 |
改变语句执行序 | break continue | 通过打断或继续机制,改变当前工码的执行顺序 |
4.5 三种循环结构的异同点
² 用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的。
² while 循环和for循环都是先判断表达式,后执行循环体;而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。
² 这三种循环都可以用break语句跳出循环,用continue语句结束本次循环。