📖 第五章 流程控制
📝5.1 分支语句
Java语言支持两种分支语句:if-else和switch语句
🖊️ 5.1.1 if else语句
if-else语句为两路分支语句,它的基本语法为:
if(布尔表达式) {
程序代码块; // 如果布尔表达式的值为真,则执行这段代码
} else {
程序代码块; // 如果布尔表达式的值为假,则执行这段代码
}
使用if else语句时,有以下注意事项:
if后面必须是布尔表达式,而不能是数字类型,这一点与C/C++不同。
if语句后面的else语句不是必须的。
假如if语句或else语句的程序代码块中包括多条语句,则必须放在大括号内;如果程序代码块中只有一条语句,可以不用大括号。
if-else语句的一种特殊的串联编程风格为:
if(expression){
statement1
}else if(expression2){
statement2
}else if(expressionM){
statementM
}else{
statementN
}
🖊️5.1.2 switch语句
switch语句是多路分支语句,它的基本语法为:
switch(expr){
case value1
statements;
break;
case valueN
statements;
break;
default:
statement;
break;
}
在使用switch语句时,有以下注意事项:
在switch(expr)语句中,expr表达式的类型包括以下几种:
与int类型兼容的基本类型,所谓与int类型兼容,是指能自动转换为int类型。因此expr表达式的合法类型包括:byte, short, char, int
字符串类型。
枚举类型。
在“case valueN"子句中,valueN表达式必须满足以下条件:
valueN的类型必须是与int类型兼容的基本类型。
valueN必须是常量。
各个case子句的valueN表达式的值不同。
在switch语句中最多只能有一个defualt子句。default子句是可选的。
如果switch表达式与某个case表达式匹配,或者与default语句匹配,就从这个case语句或default子句开始执行。加入遇到break语句,就退出整个switch语句。否则依次执行switch语句中后续的case子句,不在检查case表达式的值。
switch语句的功能也可以用if else语句来实现。
📝5.2 循环语句
循环语句的作用是反复执行一段代码,直到不能满足循环条件为止。
循环语句包含以下4个部分:
初始化部分:用来设置循环的一些初始条件,比如设置循环控制变量的初始值。
循环条件:这是一个布尔表达式,每一次循环都要对该表达式求值,以判断到底是继续循环还是终止循环。
循环体:循环操作的主体部分,可以是一条语句,也可以是多条语句。
迭代部分:通常属于循环体的一部分,用来改变循环控制变量的值,从而改变循环条件表达式的布尔值。
Java语言共提供3种循环:for循环、while循环和do while循环。
🖊️5.2.1 while语句
while语句是Java语言中最基本的循环语句。它的基本格式如下:其中初始化部分是可选的
[初始化部分]
while(循环条件){
循环体, 包括迭代部分
}
当代表循环条件的布尔表达式的值为true;就重复执行循环;否则终止循环。
使用while语句时,有以下注意事项:
如果循环体包含多条语句,必须放在大括号内,如果循环体只有一条语句,可以不用大括号。
while语句在循环一开始就计算循环条件表达式,若表达式的值为false,则循环体一次也不会执行。
while语句(或for语句和do while语句)的循环体可以为空,这是因为一个空语句(仅由一个分号组成的语句)在语法上是合法的。
对于while语句(或for语句和do while语句),都应该确保提供终止循环的条件,避免死循环(即永远不会终止的循环,或者称无限循环)
🖊️ 5.2.2 do while 语句
do while 语句首先执行循环体,然后判断循环条件。
do while 语句的基本格式如下:
[初始化条件]
do{
循环体, 包括迭代部分
}while(循环条件);
在任何情况下,do while语句都会至少执行一次循环体,然后再判断循环条件。当代表循环条件的布尔表达式的值为true,就继续执行循环体,否则终止循环。
🖊️ 5.2.3 for语句
for语句和while语句一样,先判断循环条件,再执行循环体。它的基本格式如下:
for(初始化部分;循环条件;迭代部分){
循环体
}
在执行for循环语句时,先执行初始化部分,这部分会被执行一次,接下来计算作为循环条件的布尔表达式,如果为true,就执行循环体,接着执行迭代部分,然后再计算作为循环条件的布尔表达式,如此反复。
在使用for循环时,由以下注意事项:
如果for语句的循环体只有一条语句,可以不用大括号。
控制for循环的变量常常只用于本循环,而不用在程序的其它地方。在这种情况下,可以在循环的初始化部分声明变量,。
在初始化部分和迭代部分可以使用逗号语句。
for语句的初始化部分,循环条件或者迭代部分都可以为空。
作为一种编程惯例,for语句一般用在循环次数事先可确定的情况,而while和do while用在循环次数事先不可确定的情况。
🖊️5.2.4 foreach语句
foreach语句是for语句的特殊简化版本,它可以简化遍历数组和集合的程序代码。
foreach语句的语法格式如下:
for(元素类型 元素变量x:待遍历的集合或数组){
引用了变量x的java语句;
}
foreach语句不是一个关键字,习惯称以上语法格式的for语句称为foreach语句。
🖊️ 5.2.5 多重循环
各种循环语句可以相互嵌套,组成多重循环。
📝 5.3 流程跳转语句
break continue和return语句用来控制流程的跳转。
break:从switch语句、循环语句或标号的代码块中退出。
continue:跳过本次循环,执行下一次循环,或执行标号的循环体。
return:退出本方法,跳到上层调用方法;如果本方法的返回类型不是void,需要提供相应的返回值。
break语句和continue语句可以与标号联合使用。
标号用来标识程序中的语句,标号的名字可以是任意合法标识符。
在使用标号时,需要注意以下事项:
在语法上,标号可用来标识除变量声明语句之外的任何有效语句。
continue语句中的标号必须定义在while、do while和for循环语句前面。
break语句中的标号必须定义在while、do while和for循环语句或switch语句前面。