黑马程序员—————流程控制语句——选择结构

------- 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语句,因为效率稍高。



你可能感兴趣的:(java学习)