Java 分支语句

在 Java 中,提供了 if-else 和 switch 语句来对分支结构的支持。

if-else 语句

if-else 语句是使用最多的分支语句,它适合单路分支、双路分支和多路分支。if-else 语句有三种形式,分别实现单路、双路和多路分支。分别如下:

if 语句(单路分支)

if 语句的语法如下:

if(<表达式>) {
    <语句>
}

其中,<表达式> 的计算结果必须为 boolean 类型,<语句> 可以是单条语句或使用花括号括起来的语句块。当<表达式>为 true 时,才执行<语句>,否则,不执行<语句>。

示例:

public class Demo {

    public static void main(String[] args) {
        int a = 30;
        // 不推荐,可读性差
        if(a > 20) System.out.println("a > 20");

        // 不推荐,可读性差
        if(a > 20)
            System.out.println("a > 20");

        // 推荐
        if(a > 20) {
            System.out.println("a > 20");
        }
    }

}

运行示例,输出结果如下:

a > 20
a > 20
a > 20

if-else 语句(双路分支)

if-else 语句的语法如下:

if(<表达式>)
    <语句1>
else
    <语句2>

其中,<表达式> 的计算结果必须为 boolean 类型,<语句1>和<语句2> 可以是单条语句或使用花括号括起来的语句块。如果<表达式>为true,则执行<语句1>。如果<表达式>为false,则执行<语句2>。

示例:

public class Demo {

    public static void main(String[] args) {
        int a = 30;

        // 不推荐,可读性差
        if(a > 20)
            System.out.println("a > 20");
        else
            System.out.println("a <= 20");

        // 推荐
        if(a > 20) {
            System.out.println("a > 20");
        } else {
            System.out.println("a <= 20");
        }
    }

}

运行示例,输出结果如下:

a > 20
a > 20

if-elseif-else 语句(多路分支)

if-else 语句的语法如下:

if(<表达式1>)
    <语句1>
else if(<表达式2>)
    <语句2>
...
else if(<表达式n>)
    <语句n>
else
    <语句n+1>

其中,<表达式1>、<表达式2>、<表达式n> 的计算结果必须为 boolean 类型,<语句1>、<语句2>、<语句n>和<语句n+1> 可以是单条语句或使用花括号括起来的语句块。

如果<表达式1>为 true,则执行<语句1>。

如果<表达式1>为 false,<表达式2>为 true,则执行 <语句2>。

如果<表达式1>、<表达式2>为 false,<表达式n>为true,则执行<语句n>。

如果上面所有表达式均为 false,则执行<语句n+1>。

示例:

public class Demo {

    public static void main(String[] args) {
        int score = 78;
        if(score > 90) {
            System.out.println("优 秀");
        } else if(score > 80) {
            System.out.println("良 好");
        } else if(score > 60) {
            System.out.println("及 格");
        } else {
            System.out.println("不及格");
        }
    }

}

运行示例,输出结果如下:

及 格

if 语句嵌套

if 语句可以嵌套使用,即在 if 语句分支中又包含一个或多个if语句。语法格式:

if(<表达式1>)
    if(<表达式2>)
        <语句1>
    else
        <语句2>
else
    <语句3>

其中,<表达式1>、<表达式2> 的计算结果必须是布尔值。<语句1>、<语句2>、<语句3> 可以是单条语句也可以是花括号括起来的语句块。如果 <表达式1> 为 true,则执行 if 语句内部的 if 语句,否则执行 <语句3>。

示例:

public class Demo {

    public static void main(String[] args) {
        int score = 78;
        if(score > 90) {
            System.out.println("优 秀");
        } else {
            if(score > 80) {
                System.out.println("良 好");
            } else {
                if(score > 60) {
                    System.out.println("及 格");
                } else {
                    System.out.println("不及格");
                }
            }
        }
    }

}

运行示例,输出结果如下:

及 格

switch 语句

switch 语句也称开关语句,用于实现简单的多路分支结构,语法如下:

switch(<表达式>) {
    case <常量1>:
        [<语句1>]
    case <常量2>:
        [<语句2>]
    ...
    case <常量n>:
        [<语句n>]
    [default:
        <语句n+1>]
}

其中,<表达式>应该为 byte、short、char、int 基本类型,也可以是这些基本类型的引用类型 Byte、Short、Character、Integer,还可以是枚举类型 Enum。从 Java SE7 开始,case 标签还可以是字符串字面值。例如:

import java.util.Scanner;

public class Demo {

    public static void main(String[] args) {
        System.out.println("输入命令(file|help):");
        Scanner scanner = new Scanner(System.in);
        String command = scanner.nextLine();
        switch (command) {
            case "file":
                System.out.println("打开文件");
                break;
            case "help":
                System.out.println("显示帮助信息");
                break;
            default:
                System.out.println("未知命令");
        }
    }

}

运行示例,输出结果如下:

输入命令(file|help):
help
显示帮助信息

switch 语句执行过程如下:

先计算 switch 表达式的值,再将其依次与各case后跟的常量值比较,如果相等,则执行此 case 后面的语句。即使遇到下一个 case 仍会继续执行,除非遇到 break 语句。如果所有的 case 均没有匹配,则执行 default 后面的语句。例如:

public class Demo {

    public static void main(String[] args) {
        Demo demo = new Demo();
        System.out.println(demo.show(9));
        System.out.println(demo.show(5));
        System.out.println(demo.show(2));
        System.out.println(demo.show(12));
    }

    private String show(int level) {
        String message;
        switch (level) {
            case 10:
            case 9:
            case 8:
                message = "高级";
                break;
            case 7:
            case 6:
            case 5:
                message = "中级";
                break;
            case 4:
            case 3:
            case 2:
            case 1:
                message = "低级";
                break;
            default:
                message = "未知级别";
        }
        return message;
    }

}

运行示例,输出结果如下:

高级
中级
低级
未知级别


说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号