知识点讲解:光盘:视频\PPT讲解(知识点)\第4章\条件语句演练.mp4
到此为止,已经学完了Java语言中的所有假设语句,此时我们可以随心所欲地编写程序。但是由于初学者编程经验尚浅,缺少处理问题的经验,所以在本节的内容中,将通过具体条件语句的实战演练来提高大家的编程能力。
switch是控制选择的一种方式,编译器生成代码时可以对这种结构进行特定的优化,从而产生效率比较高的代码。在Java中,编译器能够根据分支的情况分别产生tableswitch和lookupswitch,其中tableswitch适用于处理分支比较集中的情况,而lookupswitch适用于处理分支比较稀疏的情况。请看下面的一段代码【光盘:\daima\4\Testone1.java】。
public class Testone1 { public static void main(String[] args){ int i = 3; switch(i){ case 0: System.out.println("0"); break; case 1: System.out.println("1"); break; case 3: System.out.println("3"); break; case 5: System.out.println("5"); break; case 10: System.out.println("10"); break; case 13: System.out.println("13"); break; case 14: System.out.println("14"); break; default: System.out.println("default"); break; } } }
上面的switch语句代码非常简单,在编写代码时读者一定要清楚当参数case和参数switch的值相等时,系统就会执行对应的case语句。在Java中规定,参数case必须是常量表达式,也就是case语句参数必须是最终的,即case值只能使用常量值常量的最终变量。执行上述代码后的效果如图4-12所示。
图4-12 正确编写switch语句
所谓条件语句,是指程序根据条件是否成立进行选择执行的一类语句。条件语句在Java应用中使用得比较广泛,难点在于如何准确地抽象条件。例如实现程序登录功能时,如果用户名和密码正确,则进入系统,否则弹出“密码错误”这样的提示框等。下面是一段经典的if语句代码【光盘:\daima\4\Ifjing.java】。
public class Ifjing { public static void main(String[] args){ int month = 3; int days = 0; //日期数 if(month == 1){ days = 31; }else if(month == 2){ days = 28; } else if(month == 3){ days = 31; } else if(month == 4){ days = 30; } else if(month == 5){ days = 31; } else if(month == 6){ days = 30; } else if(month == 7){ days = 31; } else if(month == 8){ days = 31; } else if(month == 9){ days = 30; } else if(month == 10){ days = 31; } else if(month == 11){ days = 30; } else if(month == 12){ days = 31; } System.out.print(days); } }
在书写if语句时,每个else if语句是有顺序的。在实际书写时,必须按照逻辑上的顺序进行书写,否则将出现逻辑错误。执行上述代码后的效果如图4-13所示。
图4-13 if语句的正确书写
有很多读者学完了switch语句后,并不真正知道switch语句的执行顺序是怎么一回事。从前面所学的知识可以知道,switch表达式的值决定选择哪个case分支,如果找不到相应的分支,就直接从“default”开始输出,当程序执行一条case语句后,因为例子中的case分支中没有break和return语句,所以程序会执行紧接于其后的语句。为了更好地说明switch语句的执行顺序,下面通过3段代码进行详细说明。
第一段代码如下所示。
public class switchs1 { public static void main(String[] args){ int x=0; switch(x){ default: System.out.println("default"); case 1: System.out.println(1); case 2: System.out.println(2); } } }
执行上面的代码会得到如下结果:
default 1 2
第二段代码如下所示。
public class switchs2 { public static void main(String[] args){ int x = 0; switch(x){ default: System.out.println("default"); case 0: System.out.println(0); case 1: System.out.println(1); case 2: System.out.println(2); } } }
执行上面的代码会得到如下结果:
0 1 2
第三段代码如下所示。
public class switchs3 { public static void main(String[] args){ int x = 0; switch(x){ case 0: System.out.println(0); case 1: System.out.println(1); case 2: System.out.println(2); default: System.out.println("default"); } } }
执行上面的代码会得到如下结果:
0 1 2 default