当要从多个分支中选择一个分支去执行,虽然可用if嵌套语句来解决,但当嵌套层数较多时,程序的可读性会大大降低。Java提供的switch语句可清楚地处理多分支选择问题。switch语句根据表达式的结果来执行多个可能操作中的一个,它的语法形式如下:
switch语句中的每个“case常量”称为一个case子句,代表一个case分支的入口。switch语句的流程图如图2-11所示。
图2-11 switch语句的流程图
switch语句得注意以下几点:
①switch后面的表达式的类型可以是byte、char、short和int(不允许浮点数类型和long类型,也不能为一个字符串)。
②switch语句将表达式的值依次与每个case子句中的常量值相比较。如果匹配成功,则执行该case子句中常量值后的语句,直到遇到break语句为止。
③case子语句后面的值1、值2、……、值n是与表达式类型相同的常量,但它们之间的值应各不相同,否则就会出现相互矛盾的情况。case后面的语句块可以不用花括号括起来。
④default语句可以省去不要。当表达式的值与所有case子句中的值都不匹配时,就执行default后的语句。如果表达式的值与所有case子句中的值都不匹配且没有default子句,则程序不执行任何操作,而是直接跳出switch语句,进入后续程序段的执行。
⑤当表达式的值与某个case后面的常量值相等时,就执行case后面的语句块。
⑥若去掉break语句,则执行完第一个匹配case后的语句块后,会继续执行其余case后的语句块,而不管这些语句块前的case值是否匹配。
⑦通过if-else语句可以实现switch语句所有的功能。但通常使用switch语句更简练,且可读性强,程序的执行效率也高。
⑧ if-else语句可以基于一个范围内的值或一个条件来进行不同的操作,但swtich语句中的每个case子句都必须对应一个单值。
return语句用于方法的返回值,当程序执行到return语句时,终止当前方法的执行,返回到调用这个方法的语句。return语句通常位于一个方法体的最后一行,有带参数的和不带参数的两种形式,带参数形式的return语句退出该方法时,会返回一个值。
当方法用void声明时,说明不需要返回值(返回值类型为空),应使用不带参数的return语句。不带参数的return语句也可以省略,当程序执行到这个方法的最后一条语句时,遇到方法结束标志“}”,就自动返回到调用这个方法的程序中。
若方法有返回值,则在方法体中用return语句指明要返回的值。其格式为:
其中表达式可以是常量、变量、对象等,且上述两种形式是等价的。此外,return语句后面表达式的数据类型必须与成员方法头中给出的“返回值的类型”一致。
示例:根据成绩判断等级。输入100以内的分数,根据分数判断优、良、及格、不及格4个等级,分数小于60分为不及格;大于60分小于70分为及格;大于等于70小于90为良好;大于等于90分为优秀。
for语句是循环的另一种表示形式。for语句的语法形式为:
for是for语句的关键字,语句为for语句的循环体,若有多个语句时,就会构成复合语句。
for语句中循环控制变量必须是有序类型,常用的有整型、字符型、布尔型。循环控制变量初值和终值通常是与控制变量类型相一致的一个常量,也可以是表达式。循环次数由初值和终值决定。
for语句的执行过程如图2-12所示。
图2-12 for语句流程图
for语句执行步骤如下:
①按表达式1将初值赋给循环控制变量。
②按表达式2判断循环是否成立,即判断控制变量的值是否符合条件。
③若条件成立,则执行循环体。
④按表达式3修改控制变量。对于递增型为原控制变量值的后续;对于递减型为控制变量值的前导。
⑤返回步骤②。
⑥结束循环。
自增和自减运算符(++和--)
对一个变量做加1或减1处理时,可以使用自增运算符++或自减运算符--。++或--是单目运算符,放在操作数的前面或后面都是允许的。++与--的作用是使变量的值增1或减1。操作数必须是一个整型或浮点型变量。自增、自减运算的含义及其使用实例见表2-8。
表2-8 自增、自减运算的含义及其使用实例
在使用自增/自减运算时应注意下面几个问题。
· 自增/自减只能作用于变量,不允许对常量、表达式或其他类型的变量进行操作。常见的错误是试图将自增或自减运算符用于非简单变量表达式中。
· 自增/自减运算可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
· 在Java 1.5以上版本中,自增/自减运算可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double和Character。
· 自增/自减运算结果的类型与被运算的变量类型相同。
示例:计算1~100累加和。