顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。在Java中有以下两种分支结构:
1.if/if...else/if...else if...else语句
2.switch...case 语句
一个 if 语句包含一个布尔表达式和一条或多条语句。
语法:
if(布尔表达式){
//布尔表达式结果为true执行的代码块
}
例:
//if语句
@Test
public void test_01(){
int a = 1;
if(a > 0){
System.out.println("a 大于 0");
}
}
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
语法:
if(布尔表达式){
//布尔表达式为true时执行的代码块
}else{
//布尔表达式为false时执行的代码块
}
例:
//if...else语句
@Test
public void test_02(){
int a = 0;
if(a > 0){
System.out.println("a 大于 0");
}else {
System.out.println("a 不大于 0");
}
}
if后可以跟无限个else if,但最多只能有一个else语句,并且其要放在所有的else if语句之后。
一旦if或else if语句的其中一个的布尔表达式的结果为true,其余的else if以及else语句全部跳过执行。
语法:
if(布尔表达式_01){
//布尔表达式_01为true时执行的代码块
}else if(布尔表达式_02){
//布尔表达式_02为true时执行的代码块
}else if(布尔表达式_03){
//布尔表达式_03为true时执行的代码块
}else{
//以上布尔表达式都为false时执行的代码块
}
例:
//if..else if...else语句
@Test
public void test_03(){
int a = 0;
if(a > 0){
System.out.println("a 大于 0");
}else if (a < 0){
System.out.println("a 小于 0");
}else {
System.out.println("a 等于 0");
}
}
switch 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch语句支持的数据类型:byte、short、int、char,JDK1.5后,添加了对enum(枚举)的支持,JDK1.7后,添加了对String(字符串)类型的支持。
switch语句可以有多个case分支。
case分支中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面量。
当变量与case语句对应的值相等时,case之后的语句执行,直到遇见break语句才会跳出switch语句。如果没有break语句,程序会执行下一条case语句,直到break语句出现为止。
default语句,可选,该分支必须为switch语句的最后一个分支,default在没有case语句值与变量的值相等的时候执行,其不需要break语句。
一般情况下,每个case语句对应的代码块结束要带上break语句,防止case穿透。
语法:
switch(变量){
case value_01:
//变量与value_01相等时执行的语句
break; //可选
case value_02:
//变量与value_02相等时执行的语句
break; //可选
//可以有无限个case分支
default : //可选
//变量与以上value都不相等时执行的语句
}
例:
//switch语句
@Test
public void test_04(){
String a = "笑笑";
switch (a){
case "嘻嘻":
System.out.println("嘻嘻");
break;
case "哈哈":
System.out.println("哈哈");
break;
case "笑笑":
System.out.println("笑笑");
break;
default:
System.out.println("没有匹配的分支!");
}
}