------- android培训、java培训、期待与您交流! ----------
流程控制语句:可以控制程序的执行流程。
分类:顺序结构,选择结构和循环结构。
顺序结构在我们所设计的程序中是最常使用到的结构流程,就是从上到下,依次执行。
本文重点讨论选择结构。
一、选择结构分为if语句和switch语句
(一)if语句
1、if 语句格式1:
if(比较表达式){
语句体;
}
执行流程:先计算比较表达式的值,
如果结果为true则执行语句体;
如果结果为false则不执行语句体;
举例(省略类名和主函数不写了):
int x = 10;
if(x==10){
System.out.println("x的值是10");
}
if(x==20){
System.out.println("x的值是20");
}
2、if 语句格式2:
if(比较表达式){
语句体1;
}
else{
语句体2;
}
执行流程:先计算比较表达式的值:
如果为true则执行语句体1;
如果为false则执行语句体2;
举例(省略类名和主函数不写了):
int x = 1,y;
if(x==1){
y = 1;
}
else{
y = 2;
}
注:可以看出上例也可以通过三元运算符来做出来,但是if语句的格式2和三元运算符有什么区别的?
if语句和三元运算符的区别如下:
三元运算符可以实现的,都可以采用if语句实现,反之不一定成立;
如果if else语句的语句体是输出语句的话,三元运算符就不能代替if语句了;
因为三元运算符是一个运算符,运算符操作完毕,必须有一个结果,而不能是输出语句。
3、if 语句格式3:
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
...
else {
语句体n+1;
}
执行流程:首先计算比较表达式1:
如果为true则执行语句体1,if语句结束;
如果为false则接着计算比较表达式2;
如果比较表达式2的结果为true则执行语句体2,if语句结束;
如果比较表达式2的结果是false则接着计算比较表达式3;
……
如果执行到比较表达式n的结果依然为为false,则执行语句体n+1,if语句结束。
举例(省略类名和主函数不写了):
需求:键盘录入一个分数,判断并输出成绩的等级
90-100 优秀
80-90 好
70-80 良
60-70 及格
0-60 不及格
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//录入数据
System.out.println("请输入你的考试成绩:");
int score = sc.nextInt();
if(score<0 || score>100) {
System.out.println("你输入的成绩有误");
}else if(score>=90 && score<=100) {
System.out.println("优秀");
}else if(score>=80 && score<90) {
System.out.println("好");
}else if(score>=70 && score<80) {
System.out.println("良");
}else if(score>=60 && score<70) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
那么开发的时候选择哪种if语句合适呢?
格式1:适合做单个判断的情况
格式2:适合做两个判断的情况
格式3:适合做多个判断的情况
(二)switch语句
switch语句格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
……
default:
语句体n+1;
break;
}
格式注释:
表达式:取值有限定,只能是byte,short,int,char类型的,JDK5以后可以是枚举,JDK7以后可以使字符串
case:后面跟的是要和表达式比较的值
语句体:要执行的代码
break:中断,结束的意思,可以控制switch语句的结束
default:当所有的值都和表达式不匹配的时候,就会执行default控制的语句,相当于if语句的else
举例(省略类名和主函数不写了):
键盘录入一个数据,根据这个数据,输出对应的星期
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数据(1-7):");
int week = sc.nextInt();
switch(week) {
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语句要注意的事项:
a:case后面只能是常量,不能是变量,而且多个case后面的值不能出现相同的
b:default最好不要省略,因为它的作用是对不正确的情况给出提示
c:break最好不要省略,一旦省略,可能得不到想要的结果
d:default不一定放在最后,可以放在任意位置,但是建议在最后
e:switch语句的结束条件:
(1)遇到break结束
(2)遇到语句末尾结束
作为流程控制的选择结构,switch语句和if语句有什么区别呢?
switch语句和if语句的区别如下:
if语句主要用于:
a:针对结果是boolean类型的判断
b:针对范围的判断
c:针对几个常量值的判断
switch语句主要用于:
a:针对几个常量值的判断
由此可见,if语句的应用范围更广泛一些。但是如果是对针对几个常量值进行判断,建议用switch语句,因为效率稍高。