流程控制语句——if、switch
if语句:
1. 单if语句
格式:
if(关系表达式){
语句体;
}
- 执行流程
- 首先判断关系表达式,看其结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
代码举例:
public class Demo1{
public static void main(String[] agrs){
int a=10;
int b=20;
if(a==b){
System.out.println("a等于b");
}//即当a等于b的时候执行输出语句,不等于时不执行,即跳过输出语句
}
}
2. if…else语句
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
- 执行流程
- 首先判断关系表达式,看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
代码举例:
public static void main(String[] agrs){
int b=1;
if(b % 2 == 0){
System.out.println("b为偶数");
}else{
System.out.println("b为奇数");
}//得b为奇数
}
3. if … else if … else
格式:
if(判断条件1){
执行语句1;
}else if(判断条件2){
执行语句2;
}
···//表示else if可以写很多次
}else if (判断条件n){
执行语句n;
}else{
执行语句n+1;
}
- 执行流程
- 首先判断关系表达式1,看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2,看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式3…看其结果是true还是false
- …
- 如果没有任何关系表达式为true,就执行语句体n+1。
代码举例:
public static void main(String[] agrs){
// x和y的关系满足如下:
// x>=3,y = 2x + 1;
//‐1<=x<3,y = 2x;
// x<=‐1,y = 2x – 1;
// 根据给定的x的值,计算出y的值并输出。
// 定义变量
int x = 5;
int y;
if (x>= 3) {
y = 2 * x + 1;
} else if (x >= ‐1 && x < 3) {
y = 2 * x;
} else {
y = 2 * x ‐ 1;
}
System.out.println("y的值是" +y);//这个+y表示字符串的连接作用
}
- 指定考试成绩,判断学生等级
- 85-100 优秀
- 75-85 良好
- 60-75 及格
- 60以下 不及格
public static void main(String[] args) {
int score = 100;
if(score<0 || score>100){
System.out.println("你的成绩是错误的");
}else if(score>=85 && score<=100){
System.out.println("你的成绩属于优秀");
}else if(score>=75 && score<85){
System.out.println("你的成绩属于良好");
}else if(score>=60 && score<75){
System.out.println("你的成绩属于及格");
}else {
System.out.println("你的成绩属于不及格");
}
}
switch语句
1. switch语句:
格式:
swich(表达式){
case 常数值1:
语句体1;
break;
case 常数值2:
语句体2;
break;
···
default:
语句体n+1;
break;
}
- 执行流程
- 首先计算出表达式的值
- 其次,和case后面的常数值依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
代码举例:
public static void main(String[] args){
//定义变量,判断是星期几
int weekday = 6;
switch(weekday){
case 1;
System.out.println("星期一");
break;
case 2;
System.out.println("星期二");
break;
case 3;
System.out.println("星期三");
break;
case 4;
System.out.println("星期四");
break;
case 5;
System.out.println("星期五");
break;
case 6;
System.out.println("星期六");
break;
case 7;
System.out.println("星期日");
break;
default:
System.out.println("您输入的数字有误");
break;
}//得星期六
}
- switch语句中,表达式的数据类型,可以是
byte
,short
,int
,char
,enum
(枚举),JDK7后可以接收字符串
。
2. case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束。
public static void main(String[] args) {
int i = 2;
switch (i){
case 1:
System.out.println("语文课");
break;
case 2:
System.out.println("数学课");
case 3:
System.out.println("英语课");
default:
System.out.println("体育课");
}//因为case 2后没有break,所以直接穿透下一个case,得数学课英语课体育课
}
上述程序中,执行case 2后,由于没有break语句,程序会一直向后走,不会再判断case,直到遇到break或直接运行完整体switch。
由于case存在穿透性,因此初学者在编写switch语句时,必须要写上break。