Java分支结构详解

  • 前言
  • 一、if 语句
    • 基本语法
      • 表示一
      • 表示二
      • 表示三
    • 代码示例
      • 判定一个数字是奇数还是偶数
      • 判定一个数字是正数还是负数
      • 判定某一年份是否是闰年
    • 注意要点
      • 悬垂 else 问题
      • 代码风格问题
      • 分号问题
  • 二、switch 语句
    • 基本语法
    • 代码示例
      • 根据 day 的值输出星期
    • 注意事项
      • break 不要遗漏
      • switch 中的值只能是 整数|枚举|字符|字符串
      • switch 不能表达复杂的条件
      • switch嵌套

前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
http://www.captainbed.cn/f1

Java中的分支结构用于根据条件执行不同的代码块,包括if-else语句、switch语句等,实现程序流程的控制。


一、if 语句

在Java中,if语句是一个条件控制语句,用于根据条件的真假决定是否执行特定的代码块。

if语句中,条件是一个布尔表达式,可以是一个比较表达式(例如==!=><等),也可以是一个逻辑表达式(例如&&||!等)。

基本语法

表示一

if(布尔表达式){
    //条件满足时执行代码
}

表示二

if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件不满足时执行代码
}

表示三

if(布尔表达式){
    //条件满足时执行代码
}else if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件都不满足时执行代码
}

代码示例

判定一个数字是奇数还是偶数

public static void main(String[] args) {
    int num = 10;
    if (num % 2 == 0) {
        System.out.println("num 是偶数");
    } else {
        System.out.println("num 是奇数");
    }
}

以上代码是一个Java程序的主方法,程序开始执行的入口。在主方法中,定义了一个整型变量num,并初始化为10。

接下来使用if-else语句判断num是否是偶数。条件表达式num % 2 == 0用于判断num是否可以被2整除,如果可以,则说明num是偶数,执行if语句中的代码块,打印出”num 是偶数”。

如果条件表达式的结果为false,即num不能被2整除,说明num是奇数,执行else语句中的代码块,打印出”num 是奇数”。

因为num的值为10,可以被2整除,所以输出结果为”num 是偶数”。
Java分支结构详解插图

判定一个数字是正数还是负数

public static void main(String[] args) {
    int num = 10;
    if (num > 0) {
        System.out.println("num 是正数");
    } else if (num < 0) {
        System.out.println("num 是负数");
    } else {
        System.out.println("num 是 0");
    }
}

以上代码是一个Java程序的主方法,程序开始执行的入口。在主方法中,定义了一个整型变量num,并初始化为10。

接下来使用if-else if-else语句对num的值进行判断。首先判断num是否大于0,如果条件表达式num > 0的结果为true,则执行if语句中的代码块,打印出”num 是正数”。

如果条件表达式num > 0的结果为false,则继续判断num是否小于0。如果条件表达式num < 0的结果为true,则执行else if语句中的代码块,打印出”num 是负数”。

如果以上两个条件表达式的结果都为false,说明num等于0,执行else语句中的代码块,打印出”num 是 0″。

因为num的值为10,大于0,所以输出结果为”num 是正数”。
Java分支结构详解插图(1)

判定某一年份是否是闰年

public static void main(String[] args) {
    int year = 2000;
    if (year % 100 == 0) {
        // 判定世纪闰年
        if (year % 400 == 0) {
            System.out.println("是闰年");
        } else {
            System.out.println("不是闰年");
        }
    } else {
        // 普通闰年
        if (year % 4 == 0) {
            System.out.println("是闰年");
        } else {
            System.out.println("不是闰年");
        }
    }
}

以上代码是一个Java程序的主方法,程序开始执行的入口。在主方法中,定义了一个整型变量year,并初始化为2000。

接下来使用嵌套的if-else语句对year进行判断,判断year是否是闰年。

首先判断year是否能被100整除,即条件表达式year % 100 == 0的结果。如果条件表达式的结果为true,则执行if语句中的代码块,进一步判断是否是世纪闰年。

if语句中,判断year是否能被400整除,即条件表达式year % 400 == 0的结果。如果条件表达式的结果为true,则输出”是闰年”。如果条件表达式的结果为false,则输出”不是闰年”。

如果条件表达式year % 100 == 0的结果为false,则执行else语句中的代码块,判断是否是普通闰年。

else语句中,判断year是否能被4整除,即条件表达式year % 4 == 0的结果。如果条件表达式的结果为true,则输出”是闰年”。如果条件表达式的结果为false,则输出”不是闰年”。

因为year的值为2000,满足条件year % 100 == 0,进一步满足条件year % 400 == 0,所以输出结果为”是闰年”。
Java分支结构详解插图(2)

注意要点

悬垂 else 问题

public static void main(String[] args) {
    int x = 10;
    int y = 10;
    if (x == 10)
        if (y == 10)
            System.out.println("aaa");
        else
            System.out.println("bbb");
}

Java分支结构详解插图(3)
if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句).

此时 else 是和最接近的 if 匹配.

但是实际开发中我们 不建议 这么写. 最好加上大括号

代码风格问题

public static void main(String[] args) {
    // 风格1
    int x = 10;
    if (x == 10) {
 // 满足条件
    } else {
 // 不满足条件
    }
// 风格2
    int x = 10;
    if (x == 10)
    {
 // 满足条件
    }
    else
    {
 // 不满足条件
    }
}

虽然两种方式都是合法的, 但是 Java 中更推荐使用风格1, { 放在 if / else 同一行.

分号问题

public static void main(String[] args) {
    int x = 20;
    if (x == 10); {
        System.out.println("hehe");
    }
}

Java分支结构详解插图(4)
此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块.

二、switch 语句

在早期的JDK版本中,switch语句中对表达式的数据类型没有限制,只能是整型数据(int , short , byte)和字符型数据(char),从JDK1.7开始,支持String类型的数据。

基本语法

public static void main(String[] args) {
    switch(整数|枚举|字符|字符串){
        case 内容1 : {
            内容满足时执行语句;
 [break;]
        }
        case 内容2 : {
            内容满足时执行语句;
 [break;]
        }
 ...
        default:{
            内容都不满足时执行语句;
 [break;]
        }
    }
}

代码示例

根据 day 的值输出星期

public static void main(String[] args) {
    int day = 1;
    switch(day) {
        case 1:
            System.out.println("星期一");
            break;
        case 2:
            System.out.println("星期二");
            break;
        case 3:
            System.out.println("星期三");
            break;
        case 4:
            System.out.println("星期四");
            break;
        case 5:
            System.out.println("星期五");
            break;
        case 6:
            System.out.println("星期六");
            break;
        case 7:
            System.out.println("星期日");
            break;
        default:
            System.out.println("输入有误");
            break;
    }
}

这段代码使用了Switch语句来根据一个整型变量day的值输出对应的星期几。Switch语句中的每个case对应了一个可能的day值,当day的值满足某个case时,会执行该case下的语句,并且使用break语句跳出Switch语句。如果day的值不满足任何一个case,那么会执行default下的语句。在这段代码中,day的值为1,所以输出为”星期一”。
Java分支结构详解插图(5)
根据 switch 中值的不同, 会执行对应的 case 语句.

遇到 break 就会结束该 case 语句.

如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.

我们建议一个 switch 语句最好都要带上 default.

注意事项

break 不要遗漏

否则会失去 “多分支选择” 的效果

public static void main(String[] args) {
    int day = 1;
    switch(day) {
        case 1:
            System.out.println("星期一");
            // break;
        case 2:
            System.out.println("星期二");
            break;
    }
}

Java分支结构详解插图(6)
我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果.

switch 中的值只能是 整数|枚举|字符|字符串

public static void main(String[] args) {
    double num = 1.0;
    switch(num) {
        case 1.0:
            System.out.println("hehe");
            break;
        case 2.0:
            System.out.println("haha");
            break;
    }
}

Java分支结构详解插图(7)

switch 不能表达复杂的条件

public static void main(String[] args) {
    // 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
    if (num > 10 && num < 20) {
        System.out.println("hehe");
    }
}

Java分支结构详解插图(8)

switch嵌套

虽然可以运行,但是不美观,少用

public static void main(String[] args) {
    int x = 1;
    int y = 1;
    switch(x) {
        case 1:
            switch(y) {
                case 1:
                    System.out.println("hehe");
                    break;
            }
            break;
        case 2:
            System.out.println("haha");
            break;
    }
}

Java分支结构详解插图(9)


本站无任何商业行为
个人在线分享 » Java分支结构详解
E-->