首页 > 编程笔记 > Java笔记 阅读:8

Java中的if else分支语句(非常详细,附带实例)

我们编写的程序默认是从上到下一行行地顺序执行的,但有些情况下又需要通过条件判断来控制程序的执行顺序,从而实现程序的选择执行。

在 Java 程序中,实现条件判断的语句有两种,分别是 if 语句和 switch 语句,本节带领大家系统学习 if 语句的用法。

if 语句可以分为 4 种,即 if 语句、if-else 语句、if-else-if 语句以及嵌套 if 语句,下面分别来看 4 种用法。

Java if语句

if 语句是最简单且最常用的一种结构,它的语法如下:
if (布尔表达式) {
    语句块
}

if (布尔表达式)
    单行语句
if 后的小括号里可以是布尔值或布尔表达式,大括号里是待执行的语句块,所表达的意思是,如果小括号里的值为真则执行大括号里的语句块。如果待执行的语句为单行语句,可以将大括号省略掉。

if 结构的流程图如下图所示:

图 1 if 语句流程图

程序执行到 if 语句处时判断布尔值或布尔表达式,如果它的值为 true 则执行 if 语句所包含的语句块,而如果它的值为 false 则直接跳过语句块往下执行。

先看 if 语句的一个示例:
public class IfStatementTest {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        if (a > b) {
            System.out.println("语句1");
            System.out.println("语句2");
        }

        if (a < b)
            System.out.println("单行语句");
    }
}
第一个 if 语句的布尔表达式“a>b”的值为 false,所以不执行对应的语句块。

第二个 if 语句的“a<b”的值为 true,所以程序将输出“单行语句”。注意,第二个 if 语句对应的语句块为单行语句,所以可以省略大括号。

Java if-else语句

if 语句只支持定义单个分支的语句块,而如果想要在 true 和 false 两种分支的情况下都定义语句块则要使用 if-else 语句。

if-else 语句的语法如下:
If (布尔表达式) {
     语句块1
} else {
     语句块2
}

If (布尔表达式)
     单行语句1
else
    单行语句2
if 小括号里可以是布尔值或布尔表达式,接着的大括号里是小括号里的值为 true 时所执行的语句块,else 的大括号是小括号里的值为 false 时所执行的语句块。对于单行语句同样可以省略大括号。

if-else 语句所表达的意思是,如果小括号里的值为 true 时则执行语句块 1,否则执行语句块 2。

if-else 语句的流程图如下图所示:

图 2 if-else语句流程图

程序执行到 if 语句处时判断布尔值或布尔表达式,如果它的值为 true 则执行语句块 1,而如果它的值为 false 则执行语句块 2。

下面是 if-else 语句的示例:
public class IfStatementTest2 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        if (a > b) {
            System.out.println("语句1");
            System.out.println("语句2");
        } else {
            System.out.println("语句3");
            System.out.println("语句4");
        }

        if (a < b)
            System.out.println("单行语句1");
        else
            System.out.println("单行语句2");
    }
}
第一个 if 语句的布尔表达式“a>b”的值为 false,所以执行 else 对应的语句块,即输出“语句3”和“语句4”。

第二个 if 语句的表达式“a<b”的值为 true,所以程序将输出“单行语句1”。

Java if-else-if语句

在实际编程中有可能需要处理两个以上的分支,这时就需要使用 if-else-if 语句。它的语法如下:
if (布尔表达式1) {
     语句块1
} else if (布尔表达式2) {
     语句块2
} else {
     语句块3
}

if (布尔表达式1)
    单行语句1
else if (布尔表达式2)
    单行语句2
else
    单行语句3
第一个if(布尔表达式1)表示布尔表达式 1的值为 true 时执行语句块 1else if(布尔表达式2)表示在第一个 if 不成立的情况下布尔表达式 2的值为 true 时执行语句块 2,以此类推,可以有若干else if(布尔表达式n)语句块 n,最终以 else 结束。对于单行语句可以省略大括号。

if-else-if 语句所表达的意思是,如果布尔表达式 1 的值为 true 则执行语句块 1,否则看布尔表达式 2,如果它的值为 true 则执行语句块 2。如果前面两个布尔表达式都不满足则继续看布尔表达式 3,如果它的值为 true 则执行语句块 3,以此类推,当所有布尔表达式的值都为 false 时,执行 else 中的语句块。按顺序依次判断应该执行哪个分支的语句块。

我们可以通过下图的流程图来理解 if-else-if 语句:


图 3 if-else-if流程图

如果布尔表达式 1为 true 则执行语句块 1,否则继续执行下一个条件的判断。如果布尔表达式 2为 true 则执行语句块 2,否则继续下一个条件的判断,以此类推,依次判断每一个条件,如果以上所有布尔表达式都为 false 则执行语句块 n+1

下面是 if-else-if 语句的一个示例:
public class IfStatementTest3 {
    public static void main(String[] args) {
        int age = 30;
        if (age <= 14) {
            System.out.println("少年");
        } else if (age > 14 && age < 65) {
            System.out.println("壮年");
        } else {
            System.out.println("老年");
        }
    }
}
该程序的功能是判断年龄段,我们将年龄段分为少年(0~14岁)、壮年(15~64岁)和老年(65岁及以上)。这就是典型的多分支场景,通过 if 先判断“age <= 14”,如果条件为 true 则输出“少年”。否则通过 else if 继续判断“age > 14 && age < 65”,如果条件为 true 则输出“壮年”。最后通过 else 输出“老年”,也就是说以上两个 if 条件都不满足时我们就认为是“老年”。程序最后输出“壮年”。

Java嵌套if语句

经过前面的介绍,我们已经明白 if 语句的作用就是控制分支的,对于各种不同的“如果-否则”场景都可以用 if 语句来实现。

对于更复杂的情形我们还可以用嵌套 if 语句来实现,所谓嵌套就是可以在 if 语句、if-else 语句或 if-else-if 语句中再实现一个 if 语句、if-else 语句或 if-else-if 语句,它们之间可以任意组合。语法类似如下:
if (布尔表达式1) {
     if (布尔表达式1-1) {
           语句块1-1
     } else {
           语句块1-2
     }
} else if (布尔表达式2) {
      if (布尔表达式2-1) {
           语句块2-1
     } else {
          语句块2-2
     }
} else {
     语句块3
}
可以结合下图的流程图看上面的语法:


图 4 嵌套if语句流程图

刚开始根据布尔表达式 1 的值执行不同的分支,大致步骤如下:
仍以年龄段为例,现在要以 35 岁为分隔点将壮年进一步分为青年和中年,那么可以使用嵌套 if 语句来实现:
public class IfStatementTest4 {
    public static void main(String[] args) {
        int age = 30;
        if (age <= 14) {
            System.out.println("少年");
        } else if (age > 14 && age < 65) {
            if (age < 35) {
                System.out.println("青年");
            } else {
                System.out.println("中年");
            }
        } else {
            System.out.println("老年");
        }
    }
}
可以看到,在“else if (age > 14 && age < 65)”分支中增加了一个 if-else 语句,这样就能实现进一步的年龄分段,程序最后输出“青年”。

相关文章