黑马程序员全套Java教程_Java基础教程_分支语句(六)
1、流程控制
1.1 流程控制语句分类
*顺序结构,分支结构(if、switch),循环结构(for、while、do…while)
1.2 顺序结构
- 顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
2、if语句
2.1 if语句格式1
- 格式:
if(关系表达式){
语句体;
} - 执行流程:首先计算关系表达式的值。如果关系表达式的值为true就执行语句体;如果关系表达式的值为false就不执行语句体。然后继续执行后面的语句内容。
3.1 if语句格式2
- 格式:
if(关系表达式){
语句体1;
}else{
语句体2;
} - 执行流程:首先计算关系表达式的值。若为true则执行语句体1,若为false则执行语句体2。然后继续执行后面的语句内容。
3.2 if语句格式3
- 格式:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
…
else{
语句体n+1;
} - 执行流程:
(1)首先计算关系表达式1的值。
(2)若值为true则执行语句体1,若为false则计算表达式2的值。
(3)若值为true则执行语句体1,若为false则计算表达式2的值。
(4)…
(5)如果没有任何关系表达式为true,就执行语句体n+1。
3、switch语句
3.1 switch语句格式
- 格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
dafault:
语句体n+1;
[brea;]
} - 格式说明:
(1)表达式(6种):取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String。
(2)case:后面跟的是要和表达式进行比较的值。
(3)break:表示中断,结束的意思,用来结束switch语句。在switch语句中,如果case控制的语句体后面不写break,将会出现穿透现象,在不判断下一个case值的情况下,向下运行,知道遇到break,或者整体switch语句结束。
(4)default:表示所有情况都不能匹配的时候,就执行该处的内容,和if语句的else相似。 - 执行流程:
(1)首先计算表达式的值。
(2)依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
(3)如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束掉。
面试题:switch是否能作用在byte、long、String上?
- 早期的JDK中,switch(expr)中,expr可以是byte、short、char、int。从JDK 1.5版本开始,Java中引入了枚举类型(enum),expr也可以是枚举。从JDK 1.7版本开始,还可以是字符串(String)。长整型(long)是不可以的。
面试题:下列关于switch语句的代码执行结果是
char mychar = 'c';
switch (mychar){
default:
case 'a':
System.out.println("a");
break;
case 'b':
System.out.println("b");
break;
}
- default执行时默认找不到匹配的case,之后的case不会再匹配,所有直接顺序执行。