黑马程序员技术交流社区

标题: 【上海校区】选择语句入门基础 [打印本页]

作者: 偷树的光头强    时间: 2019-4-17 20:09
标题: 【上海校区】选择语句入门基础
本帖最后由 偷树的光头强 于 2019-4-17 20:33 编辑

                                                                          选择语句入门基础
选择结构语句
选择结构:也被称为分支结构。选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,
所以产生选择,按照不同的选择执行不同的代码。Java语言提供了两种选择结构语句:if语句和switch语句
一、if语句       if语句有三种语法格式。
(1)、if语句第一种语法格式(适合一种判断)
if(条件表达式){
    语句体;
}
执行流程:判断条件表达式的结果,当为true时,{}中的执行语句体才会执行,否则不执行语句体。

注意:
条件表达式的结果必须是布尔类型;if如果控制的语句只有一条,可以不写中括号{},直接跟语句体,但如果跟多条语句,大括号不能省略,
建议两种情况下都写。
代码示例演示:
[Java] 纯文本查看 复制代码
1.//if语句第一种语法格式  
        int i=6;  
        if(i%2==0){  
            System.out.println("if条件为true");  
       }  
        System.out.println("over");  
(2)、if语句第二种语法格式(适合两种判断)
if(条件表达式){
   语句体1;
}else{
   语句体2;
}
执行流程:同样先判断条件表达式的结果,如果为true,则执行语句体1,为false则执行语句体2.




代码演示:
[Java] 纯文本查看 复制代码
//if语句第二种语法格式  
       int j=-2;  
        if(j>0){  
           System.out.println(j+"为正数");  
        }else{  
            System.out.println(j+"为负数");  
        }  
        System.out.println("over");  

(3)、if语句第三种语法格式(适合多种判断)
if(条件表达式1){
语句体1;
}else if(条件表达式2){
语句体2;
}
...
else if(条件表达式n){
语句体n;
}else{
语句体n+1;
}
执行流程:首先判断条件表达式1的结果,如果为true,则执行语句体1,为false则继续判断条件表达式2的结果,如果为true,则执行语句体2,
为false则继续判断下一个条件表达式的结果,以此类推,如果所有的判断条件都为false,则意味着所有的条件均未得到满足,则执行语句体n+1。




代码演示:
[Java] 纯文本查看 复制代码

// if语句第三种语法格式  
int scores = 88;  
if (scores >= 90) {  
     System.out.println("您的成绩被评定为A级");  
} else if (scores >= 80) {  
     System.out.println("您的成绩被评定为B级");  
} else if (scores >= 70) {  
      System.out.println("您的成绩被评定为C级");  
} else if (scores >= 60) {  
      System.out.println("您的成绩被评定为D级");  
} else if (scores >= 0) {  
      System.out.println("您的成绩被评定为E级");  
} else {  
      System.out.println("成绩输入有误!!!");  
}  

二、switch语句
switch语句的语法格式:
switch(表达式){
   case 目标值1:
       执行语句1;
       break;
   case 目标值2:
       执行语句2;
       break;
       ......
   case 目标值n:
        执行语句n;
       break;
   default:
       执行语句n+1;
       break;
}
执行流程:switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,会执行对应的case后的语句,遇到break就会结束。
如果没找到任何匹配的值,就会执行default后的语句,然后程序结束。


注意:
(1)、表达式接收的值类型:在switch语句中的表达式只能是byte、short、char、int类型的值,如果传入其他类型的值,程序就会报错。
(JDK5.0引入enum枚举和JDK7.0接收String类型)。
(2)、case后面跟的是要和表达式进行比较的值,语句体部分可以是一条或多条语句,break表示中断,结束的意思,可以结束switch语句,
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。default可以省略,但一般不建议,
default可以放在switch语句的任何位置,一般放在最后位置,放在最后位置时紧跟它的break可以省略。
(3)、switch结束的情况:当程序执行过程中遇到了break;当程序执行到了末尾处。


代码演示:
[Java] 纯文本查看 复制代码
public static void main(String[] args) {  
int month = 12;  
switch (month) {  
  case 1:  
  case 3:  
  case 5:  
  case 7:  
  case 8:  
  case 10:  
  case 12:  
     System.out.println(month + "月有31天!");  
     break;  
  case 2:  
     System.out.println(month + "月有28天!");
     break;  
  case 4:  
  case 6:  
  case 9:  
  case 11:  
     System.out.println(month + "月有30天!");  
     break;  
  default:  
     System.out.println("不存在该月!");  
     break;  
     }  
}  



注意:
if和switch语句很像,那么在具体场景下如何合理选择使用哪种语句呢?
(1)、能用switch语句实现的都可以用if语句替换,并且if语句的条件表达式没有任何限制,但是switch语句条件表达式的类型
只能是byte、short、int、char这四种类型,以及后加入的枚举和string,并且要注意break的使用。
(2)、 If语句一般用于分支语句比较少的结构,而switch用于分支较多的结构。
(3)、如果判断具体数值不多,而且符合byte、short、int、char这四种类型虽然两个语句都可以使用,但建议使用switch语句,因为效率稍高。
其他情况,对区间判断,对结果为boolean型的判断,使用if,if的使用范围更广。














欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2