if 语句
语法
当我们需要根据给定的条件来决定是否执行一段代码时,if
语句就派上用场了。if
块仅在与其关联的布尔表达式为 true
时执行。if
块的结构如下:
1 | if (条件) { |
大括号中包含的内容就称为语句块。
实例
我们来看一个 if
语句的实例:
1 | public class IfStatement1 { |
运行结果:
1 | 在中国你已经成年 |
当条件age >= 18
成立时,也就是布尔表达式计算结果为 true
(真),if
语句块会执行。显然上面实例中 age
变量的值为 18,条件是成立的,执行程序,屏幕上将会打印 “在中国你已经成年”。
如果语句块内只有一条语句,我们也可以去掉花括号 {}
:
1 | if(age >= 18) |
当然,即使 if
语句块只有一条语句,也并不推荐这种不易于阅读的写法。
if … else … 语句
语法
if
语句可以结合 else
来使用,当布尔表达式计算结果为 false
(假)时,else
语句块将会执行。
if .. .else
语句用于有条件地执行两个代码块的其中一个,具体执行哪一个代码块,取决于布尔条件的结果。
1 | if (条件) { |
实例
改写上面 if
语句的代码:
1 | public class IfElseStatement1 { |
运行结果:
1 | 在中国你还未成年 |
我们将变量 age
赋值为 15,并且在 if
语句块的后面加了一段 else {...}
语句块。这个时候,条件 age >= 18
的计算结果就为 false
了,程序将会执行 else
语句块中的代码。执行代码,屏幕将会打印 “在中国你还未成年”。
补充
Java 支持使用条件表达式(又称三目运算符)表达式1 ? 表达式2 : 表达式3
来简化if else
语句的代码。
表达式 1 的作用等同于if
语句后面的条件,如果表达式 1 为true
, 则执行表达式2
, 否则执行表达式3
也就是说上面的代码可以使用三目运算符来实现同样的功能。实例如下:
1 | public class IfElseStatement2 { |
if … else if … else 语句
语法
if
语句可以结合else if
来实现更复杂的程序分支结构:
1 | if (条件1) { |
实例
if
语句可以搭配任意多数量的 else if
语句使用,但是只能有一个 else
。下面我们来看一段代码:
1 | // 根据给定分数向屏幕打印评级 |
运行结果:
1 | 良好 |
运行结果为 “良好”,你也许会疑惑,score 为 70,同样也大于等于 60,为什么没有输入 “及格” 呢?
这是由于当程序遇到符合条件的分支就会执行其分支语句块中的语句,不会执行其他分支语句块的语句。
嵌套 if … else 语句
你也可以在另一个 if
或者 else if
语句中使用 if
或者 else if
语句:
1 | if(条件1){ |
我们来看一个嵌套语句的实例:
1 | public class IfElseStatement1 { |
运行结果:
1 | 在中国你已经成年 |
switch 语句
语法
switch
条件语句可以理解为简写版的多个 if .. else
语句。switch
语句的语法如下:
1 | switch (值) { |
switch case 语句有如下规则:
- switch 语句中的变量类型可以是:
byte
、short
、int
、char
或者String
; - switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号;
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量;
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句;
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不一定要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句;
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
实例
我们先来看下面的一个简单实例:
1 | public class SwitchStatement1 { |
运行结果:
1 | i的值为2 |
从 JDK5 开始,switch
语句可以与 枚举值一起使用。 例如,下面是根据数字显示对应星期几的实例代码:
1 | public class SwitchStatement2 { |
从 JDK8 开始,switch
语句可以与 String
值一起使用:
1 | public class SwitchStatement3 { |
运行结果
1 | 星期二 |