IT兄弟连 Java语法教程 流程控制语句 分支结构语句5

5  switch-case条件语句

Java中的第二种分支控制语句时switch语句,switch语句提供了多路支持,因此可以使程序在多个选项中进行选择。尽管一系列嵌套if语句可以执行多路测试,然而多数情况下使用switch则更为高效。其完整形式如下:

switch(expression){

case constant1:

statement sequence;

break;

case constan2:

statement sequence;

break;

...

...

default:

statement sequence;

}

对于JDK7之前的Java版本,switch表达式必须是byte、short、int、char类型或枚举。从JDK7开始,表达式也可以是String类型,这意味着当前版本的Java可以使用字符串控制switch。通常,控制switch的表达式只是变量,而不是较大的表达式。

case语句中指定的每个值必须是唯一的常量表达式(例如字面值),重复的case值是不允许的。每个值得类型必须与switch表达式的类型兼容。

如果没有与表达式的值相匹配的case常量,就执行default语句,default语句是可选的,如果没有该语句,那么当所有的匹配都不成功时,就不会发生任何动作。当找到一个匹配时,就执行与该匹配相关的语句,直到遇到break为止。对于default或最后一个case,则执行到switch语句的末尾。

例:下面的程序演示了switch语句:

public class SwitchDemo{

public static void main(String[] args){

char score = ‘C‘;

switch (score) {

case ‘A‘:

System.out.println("优秀");

break;

case ‘B‘:

System.out.println("良好");

break;

case ‘C‘:

System.out.println("中等");

break;

case ‘D‘:

System.out.println("及格");

break;

default:

System.out.println("不及格");

}

}

}

编译并运行这个程序,在控制台将显示如图8所示的信息。

图8  SwitchDemo运行结果

通过运行结果可以看到,程序在控制台输出了“中”,这是完全正确的,字符表达式score的值为“C”,对应的结果为“中等”。

在case标签后的每个代码块后都有一条break语句,这是Java中的关键字,break语句有着极其重要的意义,Java的switch语句允许case后代码块中没有break语句,但是这种做法可能会引入一个陷阱。如果把上面程序中的break语句都注释掉,将看到以下结果:

public class SwitchDemo{

public static void main(String[] args){

char score = ‘C‘;

switch (score) {

case ‘A‘:

System.out.println("优秀");

case ‘B‘:

System.out.println("良好");

case ‘C‘:

System.out.println("中等");

case ‘D‘:

System.out.println("及格");

default:

System.out.println("不及格");

}

}

}

重新编译并运行这个程序,控制台向显示如图9所示的信息。

图9  去掉break后SwitchDemo运行结果

这个运行结果看起来很奇怪,但这正是有switch语句运行流程决定的:switch语句会先求出expression表达式的值,然后拿这个表达式和case标签后的值进行比较,一旦遇到相等的值,程序就开始执行这个case标签后的代码,不再判断与后面case、default标签的条件是否匹配,除非遇到break才会结束。

JDK7增强了switch语句的功能,允许switch语句的控制表达式是java.lang.String类型的变量或表达式,但是只能是java.lang.String类型,不能是StringBuffer或者StringBuilder这两种字符串类型。

原文地址:https://www.cnblogs.com/itxdl/p/11261988.html

时间: 2024-08-10 20:46:34

IT兄弟连 Java语法教程 流程控制语句 分支结构语句5的相关文章

IT兄弟连 Java语法教程 流程控制语句 分支结构语句1

不论哪一种编程语言,都会提供两种基本的流程控制结构:分支结构和循环结构.其中分支结构用于实现根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码.Java同样提供了这两种流程控制结构的语法,Java提供了if和switch两种分支语句,并提供了while.do-while和for三种循环语句.除此之外,JDK5还提供了一种新的循环:foreach循环,能以更简单的方式来遍历集合.数组的元素.Java还提供了break和continue来控制程序的循环结构. 分支结构语句

IT兄弟连 Java语法教程 流程控制语句 分支结构语句3

3  if-else if-else条件语句 if-else if-else的完整形式如下: if(判断条件A){ A语句块(判断条件A的值为true,执行) }else if(判断条件B){ B语句块(判断条件B的值为true,执行) }else{ C语句块(判断条件A和判断条件B的值都为false,执行) }… 当然,如果语句块中只有一条语句的话,也可以使用以下形式简化代码: if(判断条件A) A语句块; else if(判断条件B) B语句块; else C语句块; … 条件表达式被从上

IT兄弟连 Java语法教程 流程控制语句 分支结构语句4

4  嵌套if-else条件语句 嵌套if语句是作为另一个if或else语句的目标的if语句.嵌套if语句在程序设计中非常普遍.Java中,关于嵌套if语句需要记住的是,else语句总是和同一代码块中最近的且没有else与之匹配的if语句相匹配,语法格式如下所示: if(判断条件A){ if(判断条件B){ A语句块 } if(判断条件C){ B语句块 }else{ C语句块 } }else{ D语句块 } 例:下面将演示嵌套if的执行流程: public class IfElseIfElseD

IT兄弟连 Java语法教程 流程控制语句 分支结构语句2

2  if-else条件语句 if-else语句的完整形式如下: if(判断条件){ A代码块(判断条件的值为true,执行) }else{ B代码块(判断条件的值为false,执行) } 当然,如果代码块只有一条语句的话,也可以使用以下形式简化代码: if(判断条件) A代码块; else B代码块; 在if-else语句中,如果判断条件表达式为真,那么执行if中的A代码块:否则,退出if,去执行else中的B代码.两个代码块是不能同时也是不可能同时执行的.控制if语句的条件表达式必须生成bo

IT兄弟连 Java语法教程 流程控制语句 循环结构语句1

循环语句可以在满足循环条件的情况下,反复执行某一点代码,这段被重复执行的代码被称为循环体,当反复执行这个循环体时,需要在合适的时候把循环条件该为假,从而结束循环,否则循环将一直执行下去,形成死循环.循环语句可能包含如下4个部分: 1.初始化语句:一个或多条语句,这些语句用于完成一些初始化工作,初始化语句在循环开始之前执行. 2.循环条件:这是一个boolean表达式,这个表达式能决定是否执行循环体. 3.循环体:这个部分是循环的主体,如果循环条件允许,这个代码块将被重复执行.如果这个代码块只有一

IT兄弟连 Java语法教程 流程控制语句 循环结构语句4

do-while循环 Java还有一种循环是do-while.与for.while这些在循环顶部判断条件表达式的语句不同,do-while是在循环底部进行条件表达式的检查.这意味着do-while循环至少要执行一次循环体.do-while循环的语法格式如下: do{ 循环体; }while(循环条件); 与while循环不同的是,do-while循环的循环条件后必须有一个分号,这个分号表明循环结束. 例:下面的程序演示了do-while循环的执行流程: public class DoWhileD

IT兄弟连 Java语法教程 流程控制语句 循环结构语句3

while循环 Java中的另外一种循环是while循环.while循环的语法格式如下: while(条件表达式){ 循环体; } 其中条件表达式定义了控制循环的条件,可以使任何有效的boolean表达式,条件为真时,循环会迭代.条件为假时,程序控制流会立刻转移到循环后面的代码. 例:下面是一个使用while循环输出字母表的简单示例: public class WhileDemo{ public static void main(String[] args){ char ch = 'a'; wh

IT兄弟连 Java语法教程 流程控制语句 循环结构语句2

双重for循环 如果把一个循环放在另一个循环体中,那么就可以形成嵌套循环,也就是双重for循环,当然嵌套循环也可以是for循环嵌套while循环,也可以是while循环嵌套while循环……,即各种类型的循环都可以作为外层循环,也可以作为内层循环. 当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行--只是内层循环需要反复执行自己的循环体而已.当内层循环执行结束,且外层循环的循环体执行结束时,则再次计算外层循环的循环条件,决定是否再

IT兄弟连 Java语法教程 流程控制语句 控制循环结构1

Java语言没有提供goto语句来控制程序的跳转,这种做法提高了程序流程控制的可读性,但降低了程序流程控制的灵活性.为了弥补这种不足,Java提供了continue和break来控制循环结构.除此之外,return可以结束整个方法,当然也就结束了一次循环. 使用break结束循环 某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为false时才退出循环.此时,可以使用break来完成这个功能.break用于完全结束一个循环,跳出循环体.不管是哪种循环,一旦在循环体中遇到break,系