《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段文字。总结成文字如下:

  1. switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  2. switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  3. case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  4. 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  5. 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  6. switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

 至于switch和if-else的选择,笔者没有做太多的研究,据网上一些文章说,当选择项比较多的时候switch效率要高一些。不过笔者在实际运用中,很少使用switch。