分支语句又称条件语句条件语句使部分程序可根据某些表达式的值被有选择地执行。Java编程语言支持双路 if和多路 switch 分支语句。

Java的分支语句

 

If-else语句 

    在 Java编程语言中if ()用的是一个布尔表达式而不是数字值.


if语句形式1

 if(boolean类型表达式){

             

            语句A;

                                }

功能当表达式值为false时执行语句A否则跳过语句A。


if语句形式2

         if(boolean类型表达式){

                     语句A;

}

        else{

                    语句B

}

 功能表达式为true执行A表达式为false执行B

注如果不用“{ }”则“else”总是与最接近它的前一个“if”相匹配


if语句形式3

       if(Boolean类型表达式1){

              语句1;

}

       else if(表达式2){

              语句2;

}

       else if(表达式3){

              语句3;

}

       ……    ……

       else if(表达式n){

              语句n;

}

       else{

              语句n;

}


if-else语句的规则

1)、if后的括号不能省略括号里表达式的值最终必须返回的是布尔值 。

2)、如果条件体内只有一条语句需要执行那么if后面的大括号可以省略但这是一种极为不好的编程习惯。 

3)、对于给定的ifelse语句是可选的else if 语句也是可选的。

4)、else和else if同时出现时else必须出现在else if 之后 。

5)、如果有多条else if语句同时出现那么如果有一条else if语句的表达式测试成功那么会忽略掉其他所有else if和else分支。 

6)、如果出现多个if,只有一个else的情形else子句归属于最内层的if语句。



Switch语句 

     表达式的值必须与整型兼容或者enum枚举类型的常量值包含byte、short、int 和char不能是字符串或对象也不能是long型的值。switch语句只能针对某个表达式的值做出判断从而决定程序执行哪一段代码。


注意

1.switch语句中的表达式只能是byte、short、char、int类型的值如果传入其他值会报错。后引入enum枚举和String类型的值两个新特性也符合规则。

2.switch只能匹配固定值但if语句可以匹配固定值也可以匹配范围。

3.switch只能匹配int/char类型的变量但是从JDK1.8开始可以匹配字符串。


switch语句语法格式

       switch(整型或字符型变量){

             case const1:

              statement1;

              break;

             case const2:

              statement2;

              break;

       …… ……

              [default:

 statement default;

break;]

      }

* break在此处表示跳出这一分支。

* 如果没有 break 语句作为某一个 case 代码段的结束句则程序的执行将继续到下一个case而不检查 case 表达式的值。

* 当变量或表达式的值不能与任何 case 值相匹配时可选缺省符(default)指出了应该执行的程序代码

case 之后可以是直接的常量数值。


switch语句常见错误

1. 

float a = 0.123;

   switch(a) {


//错误a不是整型或字符类型变量。


    ....

   }


2. 

switch(formWay){

   case 2-1 :  //正确

     ...

  case a-2 :   //错误

     ...

  case 2.0 :   //错误

     ...

}


3.

switch (formWay) {

 case 1 : {    

       int a=2;        //正确变量a被明确限定在当前范围内

...

}

 case 2 :

    ...

                    //错误。由于case不明确的范围编译器无法在此处定义一个变量。

}


一般教科书上只是说 case 分支可以不使用但这里我想提醒大家并不是任何情况下case分支都可以不加{}比如你想在某个case里定义一个变量。