七、控制语句 (1) 1. 分支控制语句 分支语句又称条件语句,条件语句使部分程序可根据某些表达式的值被有选择地执行。Java编程语言支持双路if和多路switch分支语句。 1.1 if else语句 If else语句的基本句法是: if (布尔表达式){ 语句序列; } else { 语句序列; } 例如: int count; count = getCount(); // a method defined in the program if (count < 0) { System.out.println("Error: count value is negative."); }else { System.out.println("There will be " + count + " people for lunch today."); } 在Java编程语言中,if ()用的是一个布尔表达式,而不是数字值,这一点与C/C++不同。前面已经讲过,布尔类型和数字类型不能相互转换。因而,如果出现下列情况: if (x) // x 是 int型 你应该使用下列语句替代: if (x ! = 0) 注意: (1) if块和else块可以包含任意的java代码,自然也就可以包含新的if-else,也就是说:if-else是可以嵌套的,嵌套的规则是不可以交叉,必须完全包含。比如: if(a1 > a2){ if(a1 > a3){ //包含在里面的块必须先结束 }else{ //同样可以包含if-else块 } } (2)else部分是选择性的,并且当测试条件为假时如不需做任何事,else部分可被省略。也就是说if块可以独立存在,但是else块不能独立存在,必须要有if块才能有else块。 (3) 如果if块和else块的语句只有一句时,可以省略{},例如: if(a1 >a2) System.out.println(“这是if块”); else System.out.println(“这是else块”); 上面的代码从语法角度是完全正确的,但是从代码的可阅读性上,容易让人产生迷惑,所以我们不建议大家这么写。 (4) 还可以把else和if组和使用,就是使用else if,表达“否则如果”的意思,示例如下: if(a1 > a2){ System.out.println(“a1 > a2”); }else if(a1 > a3){ System.out.println(“a1 > a3”); }else if(a1 > a4){ System.out.println(“a1 > a4”); }else{ System.out.println(“其它”); } 再来个例子: if (score>=90){ grade= "very good"; }else if(score>=70){ grade= "good"; }else if (score>=60){ grade= "pass"; }else{ grade= "no pass"; }
(5) 如果不用“{ }” ,则“else”总是与最接近它的前一个 “if”相匹配。 例如: if ( x > 5 ) if ( y > 5 ) System.out.println( "x 和 y 都 > 5" ); else System.out.println( "x <= 5" );
执行与上面的对应匹配形式不同,而是与下面形式匹配
if ( x > 5 ) if ( y > 5 ) System.out.println( "x 和 y 都 > 5" ); else System.out.println( "x <= 5" );
1.2 switch语句 switch表示选择分支的情况,switch语句的句法是: switch (expr1){ case 值1: 语句序列; break; case 值2: 语句序列; break; default: 语句序列; break; }
说明: (1) switch的表达式expr1只能是int以下的整数型,及相应的包装类(JDK5.0以后),或者是enum枚举类型。int以下的整数型包含byte、short、char和int。不能是字符串或引用类型,也不能是long型或浮点型。 (2)当变量或表达式的值不能与任何case值相匹配时,缺省符(default)指出了应该执行的程序代码。 例1: public class Test { public static void main(String[] args) { int colorNum = 5; switch (colorNum) { case 0: System.out.println(Color.red); break; case 1: System.out.println(Color.green); break; default: System.out.println(Color.black); break; } } } 运行结果:java.awt.Color[r=0,g=0,b=0]
(3)如果没有break语句作为某一个case代码段的结束句,则程序的执行将继续到下一个case,而不检查case表达式的值。 例2:
public class Test { public static void main(String[] args) { int colorNum = 0; switch (colorNum) { case 0: System.out.println(Color.red); case 1: System.out.println(Color.green); default: System.out.println(Color.black); break; } } } 运行结果: java.awt.Color[r=255,g=0,b=0] java.awt.Color[r=0,g=255,b=0] java.awt.Color[r=0,g=0,b=0] 例2.设定背景颜色为黑色,而不考虑case变量colorNum的值。如果colorNum的值为0,背景颜色将首先被设定为红色,然后为绿色,再为黑色。
Java私塾跟我学系列——JAVA篇 网址:http://www.javass.cn 电话:010-68434236 |