1.分支结构
任何复杂的逻辑都可以通过“顺序”、“分支”、“循环”三种基本的程序结构来实现。分支结构:程序在运行中,根据不同的条件执行不同的语句。
三种结构:
- if结构:满足条件时执行语句,不满足则不执行(1条路)
- if...else结构:满足条件执行语句,不满足则执行另外的语句(两条路)
- if...else if结构:多个条件,满足不同条件执行不同语句(多条路)
1.1 if结构
语法:
if(条件表达式){
语句块;
}
1)案例1,判断一个整数是不是偶数
public class Test {
public static void main(String[] args){
int a = 4;
if(a%2==0){
System.out.println(a+"是偶数");
}
System.out.println("over");
}
}
1.2 if...else结构
语法:
if(条件表达式){
语句块1;
}else{
语句块2;
}
1)案例1,判断一个整数是不是偶数,并输出结果
public class Test {
public static void main(String[] args){
int a = 4;
if(a%2==0){
System.out.println(a+"是偶数");
}else{
System.out.println(a+"不是偶数");
}
System.out.println("over");
}
}
3.if...else if结构(嵌套)
语法:
if(条件表达式1){
语句块1;
}else if(条件表达式2){
语句块2;
}else if(条件表达式3){
语句块3;
}
1)案例1,判断一个数是正数、负数或是0并输出结果
public class Test {
public static void main(String[] args){
int a = 4;
if(a>0){
System.out.println(a+"是正数");
}else if(a<0){
System.out.println(a+"是负数");
}else if(a==0){
System.out.println(a+"是0");
}
System.out.println("over");
}
}
2.switch-case
一种特殊的分支结构,只能用于判断整数,可以根据一个整数表达式的不同值,从不同程序入口开始执行,需要和break配合使用,执行完相应的语句后则退出switch块,不执行下面的语句。
如果不加break,则会在满足条件后,将该条件下面的其他条件的语句块一起按顺序输出,直到遇到break或}停止,如下案例2。
default选项可以不写,也不是必须放在后一个(建议放最后),默认匹配完所有条件后不匹配的情况下才会执行default语句,default可以不写break,如下案例3。
语法:
switch(判断整数){
case 1:
语句块1;
break;
case 2:
语句块2;
break;
case 3:
语句块3;
break;
default:
语句块4;
break;
}
1)案例1
public class Test {
public static void main(String[] args){
int a = 4;
switch(a){
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
break;
case 3:
System.out.println("C");
break;
default:
System.out.println("D");
break;
}
}
}
/*
运行结果:D
*/
2)案例2,不加break的情况
public class Test {
public static void main(String[] args){
int a = 2;
switch(a){
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
case 3:
System.out.println("C");
default:
System.out.println("D");
}
}
}
/*
运行结果:
B
C
D
*/
3)案例3,default不写在最后,default需要加break,如下情况
public class Test {
public static void main(String[] args){
int a = 4;
switch(a){
default:
System.out.println("D");
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
break;
case 3:
System.out.println("C");
break;
}
}
}
/*
运行结果:
D
A
*/
2.1 switch-case的优缺点
1)优点:
- 常常和break语句配合使用实现分支的功能
- 与if...else的主要区别在于switch-case结构的效率高、结构更清晰
- 从JDK7.0开始,switch-case支持字符串表达式,如下案例
2)缺点:
- 只能判断整数(字符串)相等
3)案例1,判断字符串
public class Test {
public static void main(String[] args){
String sng = "B";
switch(sng){
case "A":
System.out.println("A");
break;
case "B":
System.out.println("B");
break;
default:
System.out.println("C");
break;
}
}
}
/*
运行结果:B
*/
4)案例2,判断字符
public class Test {
public static void main(String[] args){
char sng = 'B';
switch(sng){
case 'A':
System.out.println("A");
break;
case 'B':
System.out.println("B");
break;
default:
System.out.println("C");
break;
}
}
}
/*
运行结果:B
*/