Java的学习记录:charpter3.流程控制结构(上):选择结构

3.流程控制结构

Java语言的复合语句是以整个块区为单位的语句,所以又称语句块。复合语句由开括号**“{”开始,闭括号“}”结束。在定义一个类或方法时,类体或方法体就是以“{}”作为开始与结束的标记,复合语句中的每个语句都是从上到下**被执行的。复合语句以整个块为单位,能够用在任何一个单独语句可以用到的地方,并且在复合语句中还可以嵌套复合语句。

Java中有3种流程控制结构:顺序结构、选择结构、循环结构。

顺序结构:指程序从上向下依次执行每条语句,中间没有任何的判断和跳转。
选择结构:根据条件判断的结构来选择执行不同的代码。选择结构可以细分为单分支结构、双分支结构、和多分支结构。
循环结构:根据判断条件来重复执行某段代码。分为while循环语句、do-while循环语句、以及for循环语句来实现循环结构。

3.1顺序结构

指程序从上向下依次执行每条语句,中间没有任何的判断和跳转。

3.2选择结构

选择结构:根据条件判断的结构来选择执行不同的代码。选择结构可以细分为单分支结构、双分支结构、和多分支结构。

3.2.1单分支结构

if控制语句
语法

if(布尔表达式)
{
语句块
}

Java的学习记录:charpter3.流程控制结构(上):选择结构
注意
1.表达式是必要参数,表示最后返回的结果必须是一个布尔值,且只有truefalse,它可以是一个单纯的布尔变量或常量,也可以是使用关系式或布尔运算符的表达式。
2.如果布尔表达式为true将执行的语句,为false则不执行,直接执行if外下一个语句。当语句序列中只有一条语句时{}可以省略,但为了增强程序的可读性最好不要省略。

代码示例:
Java的学习记录:charpter3.流程控制结构(上):选择结构

3.2.2双分支结构

if-else语句:它表示:“如果满足条件,就进行某种处理,否则就进行另一种处理”。

语法

if(布尔表达式){
语句块1
}else{
语句块2
}

Java的学习记录:charpter3.流程控制结构(上):选择结构
注意
1.肯定有一个语句块被执行。
2.if后面的“()”内的表达式必须是boolean类型的。如果表达式的值为true,则执行紧跟if语句的复合语句;如果表达式的值是false,则执行else后面的复合语句。
3.else子句不能单独使用,它必须是if语句的一部分,与最近的if语句配对使用。

补充:if-else语句可以使用三元运算符进行简化
例如:
if(a>0){
b = a;
}else{
b = -a;
}
可以简写成:b = a > 0 ? a : -a;
使用三元运算符的好处是可以使代码简洁,并且只有一个返回值。

代码示例:
Java的学习记录:charpter3.流程控制结构(上):选择结构

3.2.3多分支结构

if-else if 多分支结构:用于针对某一事件的多种情况进行处理,通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理”

语法

if(布尔表达式 1){
语句块1
}else if(布尔表达式 2){
语句块2
}else if(布尔表达式 3){
语句块3

}else if(布尔表达式n){
语句块n
}
}else {
语句块n+1
}

Java的学习记录:charpter3.流程控制结构(上):选择结构
注意
1.表达式1~n表达式是必要参数,可以由多个表达式组成,但返回结果一定要是boolean类型
2.针对连续的区间判断,只会有一个语句块被执行
3.一般情况下,if 语句可以有若干个 else if 语句,它们必须在 else 语句之前,且else if语句之后必须有且只能有一个else

代码示例:
Java的学习记录:charpter3.流程控制结构(上):选择结构

3.2.4switch分支结构

switch多分支语句:在编程中常见的一个问题就是检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测,依次类推,当然用if语句也可以解决,但没有switch语句简洁直观。

语法

switch(条件表达式){
case value1 :
语句块1
break; //可选
case value2 :
语句块2
break; //可选

case value n :
语句块n
break; //可选
default : //可选
语句块3;
}
Java的学习记录:charpter3.流程控制结构(上):选择结构注意
1.break 的作用相当于 },结束分支,switch接口会从第一个匹配项开始执行,所有case的值都会输出,到第一个break结束。称为贯穿现象
2.如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回default的默认 case
3.default相当于if多重分支语句中的else,当条件判断考虑到所有可能出现的结果时可以省略,否则要加上。

补充
表达式的类型: 可以是byte、short、int、或者char 。jdk.7以前支持 [long以下的整数]数值类型,jdk.8开始支持字符串的等值比较,字符,枚举 的本质也是数值类型。常量如: 1 ‘a’ “abc”。

3.2.5嵌套if分支结构

在if控制语句中又包含一个或多个if控制语句的称为嵌套的if控制语句,使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句或者switch语句。

语法

​ if(表达式1){
​ 语句块1
​ if((表达式2){
​ 语句块2
​ }else if(表达式3){
​ 语句块3
​ }else{
​ 语句块4
​ }
​ }else{
​ (同if里的嵌套)
​ }

注意
如果表达式1的结果为true,执行语句块1,再对表达式2进行判断,如果为true执行语句块2,为false再对表达式3进行判断,就这样从上而下先判断再匹配重复执行。

代码示例:
Java的学习记录:charpter3.流程控制结构(上):选择结构