《Java从入门到失业》第三章:基础语法及基本程序结构(3.8):流程控制(选择语句、if-else语句、switch语句)
3.8流程控制
到此为止,我们已经基本了解了Java的基础语法,会定义不同类型的变量,会命名,会给变量赋值和运算等。接下来,我们需要学会流程控制方面的知识。
3.8.1选择语句
3.8.1.1if-else语句
你们一定都买过彩票吧,没买过的举手!很好,都买过。买完之后,是不是经常幻想中了500万之后干什么?我经常幻想中了500万后就买辆宝马X5。那么用程序来描述这个问题,就可以用if条件语句,像下面这样:
我们把现实需求转化为流程控制模型,然后用代码语句实现。幻想很美好,现实很残酷。买彩票的钱经常都是打水漂。但是我们就不买了吗?NO,我觉得下次我一定会中!那么就变成了下面这样:
买了几十期之后,我们发现偶尔还会见到回头钱,有时候中个5块,有时候中个10块,有时候还能运气爆棚一下,中个200块。像笔者中10块的时候,下一期就多买5注,中200的时候,就会去撸个串打个牙祭:
if条件语句非常简单,但是需要注意几点:
- “条件”可以是简单的boolean变量或常量,也可以是复杂的表达式,但是最终结果必须是一个boolean值
- 当代码块只有一条语句时,“{}”可以省略,但是不建议这么做
- if-else条件语句是可以嵌套的,即上图中的代码块还可以继续使用if-else语句。
在编写程序的时候,需要注意代码缩进保证可读性。比如像上图代码可以改写成:
if (n >= 5000000) { System.out.println("买一辆宝马X5"); } else { if (n >= 200) { System.out.println("撸串"); } else if (n >= 10) { System.out.println("多买5注"); } }
3.8.1.2switch语句
对于上面那个例子,条件是判断一个值是否等于某个值,并且选项很多,对于这种情况,还可以用另外一种选择语句来描述,就是switch语句。switch在处理多个选项时,比较方便。它的基本语法结构如下:
编码举例如下:
switch (n) { case 5000000: System.out.println("买一辆宝马X5"); break; case 200: System.out.println("撸串"); break; case 10: System.out.println("多买5注"); break; default: System.out.println("买一注"); break; }
需要特别注意的是图中3段文字。总结成文字如下:
- switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
- switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
至于switch和if-else的选择,笔者没有做太多的研究,据网上一些文章说,当选择项比较多的时候switch效率要高一些。不过笔者在实际运用中,很少使用switch。