Java if else语句的用法(非常详细)
在 Java 程序中,选择结构通过条件语句来实现,它通过给定的条件进行判断,从而决定执行多个分支中的哪一个。本节就来详细讲解 Java 中 if else 条件语句的用法。
if 条件语句用来控制程序在满足某些条件的情况下执行某段特定的代码,不满足条件时转而执行其他语句。
if 条件语句有 3 种形式:if 语句、if-else 双分支语句、else-if 多重分支语句,接下来分别对这 3 种形式做详细讲解。

图 1 Java if 语句处理流程图
其中判断条件可以是布尔型变量、常量或者布尔表达式,也可以是多个条件的组合,但判断条件的结果必须为布尔类型。
当判断条件的结果为 true 时,程序将会执行 if 后紧邻的语句块,如果该语句块由多条语句组成则使用“{}”将其包括起来,如果只有一条语句则“{}”可以不写;当判断条件的结果为 false 时,则会结束当前 if 语句,跳过条件成立时所需执行的语句块,继续执行后续的代码。
根据以上语法,实现案例:输入小明的考试成绩,如果成绩大于等于 80 分,输出“考的不错,给个鸡腿以示奖励!”。
再次运行程序,输入小明的成绩为70分,运行结果如下:
第 8 行中的“score >= 80”是判断条件(布尔表达式)。当表达式成立(返回结果为 true)时,将会执行该 if 后紧邻的语句块,也就是“{}”中的第 9 行语句;当表达式不成立(返回结果为 false)时,程序将会结束 if 语句,执行第 11 行语句。
对比两次运行结果可以看到:
那么,如果在条件不成立的时候也需要进行其他处理,应该怎么做呢?这时就可以使用 if-else 语句来处理。
if-else 语句称为双分支语句。所谓双分支,具体指的是在条件成立的时候执行某些处理,在条件不成立的时候会执行另外的处理,然后才会结束语句,继续执行后续的代码。
if-else语句的语法结构如下:

图 2 if-else语句处理流程图
在该语句中,判断条件的要求与 if 语句一样,其结果必须为布尔类型,当结果为 true 时将会执行紧邻 if 后的语句块 1,当结果为 false 时执行 else 后的语句块 2。
if-else 语句与 if 语句的区别在于,如果条件不成立,则会执行 else 后的语句块 2,而不是直接结束语句,也就是说语句块 1 和语句块 2 必定有一个会被执行。
再次运行程序,输入小明的成绩为 70 分,运行结果如下:
第 8 行中的“score >= 80”是判断条件(布尔表达式)。当表达式成立(返回结果为 true)的时候,将会执行该 if 后紧邻的语句块,也就是执行第 9 行语句;当表达式不成立(返回结果为 false)的时候,程序将会跳过 if 后紧邻的语句块,转而执行 else 后紧邻的语句块,也就是执行第 11 行语句。
对比两次运行结果可以看到:
else-if 语句的语法结构如下:
else-if 语句的执行流程如下图所示:

图 3 else-if语句处理流程图
else-if 语句不能独立存在,需配合 if 语句进行使用。
在 else-if 语句中,可以有多个判断条件。首先进行 if 后的判断条件 1 的判断,当结果为 true 时,执行 if 后紧邻的语句块 1,执行完毕后结束语句;当 if 后的判断条件 1 的结果为 false 时,则按照顺序执行 else if 中的判断条件 2,如果结果为 true 则执行该 else-if 后的语句块 2,否则继续执行后续 else-if 的条件判断 3,…,以此类推。如果所有的判断条件都不成立,则执行最后 else 后的语句块 n+1。
例如:
再次运行程序,输入小明的成绩为 90 分,运行结果如下:
再次运行程序,输入小明的成绩为 70 分,运行结果如下:
第 8 行 if 中的“score == 100”是第 1 个判断条件,当该条件成立时会执行其后的第 9 行语句,打印“奖励学习机一部!”,当不成立时,按照顺序判断第 2 个判断条件(score >=80)的结果。
第 10 行 else if 中的“score >= 80”为第 2 个判断条件,当第 1 个判断条件不成立时,按照顺序进行该条件的判断,如果该条件成立则会执行其后的第 11 行语句,打印“考的不错,给个鸡腿以示奖励!”;不成立则继续判断下一个判断条件(score >= 60)的结果。
第 12 行 else if 中的“score >= 60”为第 3 个判断条件,当第 1 个判断条件和第 2 个判断条件均不成立时,会判断该条件的结果,如果该条件成立则会执行其后的第 13 行语句,打印“刚及格,下次努力!”。
当第 1 个判断条件、第 2 个判断条件以及第 3 个判断条件均不成立时,则执行 else 后的第 15 行语句,打印“不及格,晚上加班!”。
通过上面的案例可以看出,输入不同成绩会输出不同的结果,第 9、11、13、15 行语句会根据是否满足条件而选择其中一行执行。每一个条件都有隐含的条件,比如第 1 个判断条件“score == 100”的隐含条件就是不成立的情况,即 score 成绩不等于100,因此该写法要注意书写顺序。
除了 if else 语句,Java 还提供了 switch case 选择语句,感兴趣的读者可猛击《Java switch case语句详解》系统学习。
if 条件语句用来控制程序在满足某些条件的情况下执行某段特定的代码,不满足条件时转而执行其他语句。
if 条件语句有 3 种形式:if 语句、if-else 双分支语句、else-if 多重分支语句,接下来分别对这 3 种形式做详细讲解。
Java if语句
if 语句包含一个判断条件和该条件成立的情况下需要执行的语句块,具体语法结构如下:if(判断条件) { 语句块; }if 语句的执行流程如下图所示:

图 1 Java if 语句处理流程图
其中判断条件可以是布尔型变量、常量或者布尔表达式,也可以是多个条件的组合,但判断条件的结果必须为布尔类型。
当判断条件的结果为 true 时,程序将会执行 if 后紧邻的语句块,如果该语句块由多条语句组成则使用“{}”将其包括起来,如果只有一条语句则“{}”可以不写;当判断条件的结果为 false 时,则会结束当前 if 语句,跳过条件成立时所需执行的语句块,继续执行后续的代码。
根据以上语法,实现案例:输入小明的考试成绩,如果成绩大于等于 80 分,输出“考的不错,给个鸡腿以示奖励!”。
import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sca = new Scanner(System.in); System.out.println("----请输入小明的考试成绩----"); double score = sca.nextDouble(); // 定义变量接收小明的录入成绩 if (score >= 80) { System.out.println("考的不错,给个鸡腿以示奖励!"); } System.out.println("考好不要骄傲,考坏不要气馁,继续加油!!!"); } }运行程序,输入小明的成绩为 90 分,运行结果如下:
------请输入小明的考试成绩-----
90
考的不错,给个鸡腿以示奖励!
考好不要骄傲,考坏不要气馁,继续加油!!!
再次运行程序,输入小明的成绩为70分,运行结果如下:
------请输入小明的考试成绩-----
70
考好不要骄傲,考坏不要气馁,继续加油!!!
第 8 行中的“score >= 80”是判断条件(布尔表达式)。当表达式成立(返回结果为 true)时,将会执行该 if 后紧邻的语句块,也就是“{}”中的第 9 行语句;当表达式不成立(返回结果为 false)时,程序将会结束 if 语句,执行第 11 行语句。
对比两次运行结果可以看到:
- 第 1 次输入小明的成绩为90分时,判断条件“score >= 80”成立,即表达式的结果返回为 true,此时程序执行了第 9 行的语句,“考的不错,给个鸡腿以示奖励!”先被打印出来,而后又执行第 11 行语句打印了“考好不要骄傲,考坏不要气馁,继续加油!!!”;
- 第 2 次输入小明的成绩为 70 分时,判断条件“score >= 80”不成立,即表达式的结果返回为 false,此时程序跳过了第 9 行的语句,转而执行第 11 行语句打印了“考好不要骄傲,考坏不要气馁,继续加油!!!”。
注意,如果 if 条件后的语句块只有一条,{}可以省略,但为了保证可读性,一般不建议省略。
Java if-else语句
前面的 if 语句只表明了在条件成立的情况下应该执行什么样的处理,但是条件不成立的时候语句就结束了,程序也将继续执行后续的代码。那么,如果在条件不成立的时候也需要进行其他处理,应该怎么做呢?这时就可以使用 if-else 语句来处理。
if-else 语句称为双分支语句。所谓双分支,具体指的是在条件成立的时候执行某些处理,在条件不成立的时候会执行另外的处理,然后才会结束语句,继续执行后续的代码。
if-else语句的语法结构如下:
if (判断条件) { 语句块1; } else { 语句块2; }if-else 语句的执行流程如下图所示:

图 2 if-else语句处理流程图
在该语句中,判断条件的要求与 if 语句一样,其结果必须为布尔类型,当结果为 true 时将会执行紧邻 if 后的语句块 1,当结果为 false 时执行 else 后的语句块 2。
if-else 语句与 if 语句的区别在于,如果条件不成立,则会执行 else 后的语句块 2,而不是直接结束语句,也就是说语句块 1 和语句块 2 必定有一个会被执行。
根据以上语法,对上面的实例进行优化:输入小明的考试成绩,如果成绩大于等于80分,输出“考的不错,给个鸡腿以示奖励!”,否则输出“考试结果不理想,今天晚上不准看电视!”。注意,if 可以单独存在,而 else 不能单独存在,必须配合 if 使用。
import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sca = new Scanner(System.in); System.out.println("------请输入小明的考试成绩-----"); double score = sca.nextDouble(); // 定义变量接收小明的录入成绩 if (score >= 80) { System.out.println("考的不错,给个鸡腿以示奖励!"); } else { System.out.println("考试结果不理想,今天晚上不准看电视!"); } System.out.println("考好不要骄傲,考坏不要气馁,继续加油!!!"); } }运行程序,输入小明的成绩为 90 分,运行结果如下:
------请输入小明的考试成绩-----
90
考的不错,给个鸡腿以示奖励!
考好不要骄傲,考坏不要气馁,继续加油!!!
再次运行程序,输入小明的成绩为 70 分,运行结果如下:
------请输入小明的考试成绩-----
70
考试结果不理想,今天晚上不准看电视!
考好不要骄傲,考坏不要气馁,继续加油!!!
第 8 行中的“score >= 80”是判断条件(布尔表达式)。当表达式成立(返回结果为 true)的时候,将会执行该 if 后紧邻的语句块,也就是执行第 9 行语句;当表达式不成立(返回结果为 false)的时候,程序将会跳过 if 后紧邻的语句块,转而执行 else 后紧邻的语句块,也就是执行第 11 行语句。
对比两次运行结果可以看到:
- 第 1 次输入小明的成绩为 90 分时,判断条件“score >= 80”成立,即表达式结果返回为 true,此时程序执行了第 9 行的语句,“考的不错,给个鸡腿以示奖励!”先被打印出来,而后又执行第 13 行语句打印了“考好不要骄傲,考坏不要气馁,继续加油!!!”;
- 第 2 次输入小明的成绩为 70 分时,判断条件“score >= 80”不成立,即表达式结果返回为 false,此时程序跳过了第 9 行的语句,转而执行第 11 行 else 后紧邻的语句打印了“考试结果不理想,今天晚上不准看电视!”,最后又执行第 13 行语句打印了“考好不要骄傲,考坏不要气馁,继续加油!!!”。
Java else-if多重分支语句
if 语句可以称之为单分支语句,if-else 语句称之为双分支语句,而 else-if 语句则是多重分支语句,用来完成判断条件多于两个的逻辑处理。else-if 语句的语法结构如下:
if (判断条件1) { 语句块1; } else if (判断条件2) { 语句块2; } else if (判断条件3) { 语句块3; } … else { 语句块n + 1; }在 else-if 语句中,当满足判断条件 1 时执行语句块 1;当不满足判断条件1却满足判断条件 2 时执行语句块 2,…,以此类推,进行多重条件判断。
else-if 语句的执行流程如下图所示:

图 3 else-if语句处理流程图
else-if 语句不能独立存在,需配合 if 语句进行使用。
在 else-if 语句中,可以有多个判断条件。首先进行 if 后的判断条件 1 的判断,当结果为 true 时,执行 if 后紧邻的语句块 1,执行完毕后结束语句;当 if 后的判断条件 1 的结果为 false 时,则按照顺序执行 else if 中的判断条件 2,如果结果为 true 则执行该 else-if 后的语句块 2,否则继续执行后续 else-if 的条件判断 3,…,以此类推。如果所有的判断条件都不成立,则执行最后 else 后的语句块 n+1。
例如:
import java.util.Scanner; public class Demo0303 { public static void main(String[] args) { Scanner sca = new Scanner(System.in); System.out.println("------请输入小明的考试成绩-----"); int score = sca.nextInt(); // 定义变量接收小明的录入成绩 if (score == 100) { System.out.println("奖励学习机一部!"); } else if (score >= 80) { System.out.println("考的不错,给个鸡腿以示奖励!"); } else if (score >= 60) { System.out.println("刚及格,下次努力!"); } else { System.out.println("不及格,晚上加班!"); } } }运行程序,输入小明的成绩为 100 分,运行结果如下:
------请输入小明的考试成绩-----
100
奖励学习机一部!
再次运行程序,输入小明的成绩为 90 分,运行结果如下:
------请输入小明的考试成绩-----
90
考的不错,给个鸡腿以示奖励!
再次运行程序,输入小明的成绩为 70 分,运行结果如下:
------请输入小明的考试成绩-----
70
刚及格,下次努力!
第 8 行 if 中的“score == 100”是第 1 个判断条件,当该条件成立时会执行其后的第 9 行语句,打印“奖励学习机一部!”,当不成立时,按照顺序判断第 2 个判断条件(score >=80)的结果。
第 10 行 else if 中的“score >= 80”为第 2 个判断条件,当第 1 个判断条件不成立时,按照顺序进行该条件的判断,如果该条件成立则会执行其后的第 11 行语句,打印“考的不错,给个鸡腿以示奖励!”;不成立则继续判断下一个判断条件(score >= 60)的结果。
第 12 行 else if 中的“score >= 60”为第 3 个判断条件,当第 1 个判断条件和第 2 个判断条件均不成立时,会判断该条件的结果,如果该条件成立则会执行其后的第 13 行语句,打印“刚及格,下次努力!”。
当第 1 个判断条件、第 2 个判断条件以及第 3 个判断条件均不成立时,则执行 else 后的第 15 行语句,打印“不及格,晚上加班!”。
通过上面的案例可以看出,输入不同成绩会输出不同的结果,第 9、11、13、15 行语句会根据是否满足条件而选择其中一行执行。每一个条件都有隐含的条件,比如第 1 个判断条件“score == 100”的隐含条件就是不成立的情况,即 score 成绩不等于100,因此该写法要注意书写顺序。
除了 if else 语句,Java 还提供了 switch case 选择语句,感兴趣的读者可猛击《Java switch case语句详解》系统学习。