13. 【Java教程】Java 条件语句

简介: 13. 【Java教程】Java 条件语句

条件语句通过判断给定条件的真假来控制程序的执行。在上一小节中,我们已经简要介绍过了语句和块的概念。那么本小节我们将进一步展开介绍 Java 中所有类型的条件语句。

1. if 语句

1.1 语法

当我们需要根据给定的条件来决定是否执行一段代码时,if 语句就派上用场了。if 块仅在与其关联的布尔表达式true 时执行。if 块的结构如下:

if (条件) {
    // 当条件成立时执行此处代码
}

大括号中包含的内容就称为语句块。

1.2 实例

我们来看一个 if 语句的实例:

public class IfStatement1 {
    public static void main(String args[]) {
        int age = 18;
        if(age >= 18) {
            System.out.println("在中国你已经成年");
        }
    }
}

运行结果:


在中国你已经成年

当条件age >= 18 成立时,也就是布尔表达式计算结果为 true(真),if 语句块会执行。显然上面实例中 age 变量的值为 18,条件是成立的,执行程序,屏幕上将会打印 “在中国你已经成年”。


如果语句块内只有一条语句,我们也可以去掉花括号 {}

if(age >= 18)
    System.out.println("在中国你已经成年");

当然,即使 if 语句块只有一条语句,也并不推荐这种不易于阅读的写法。

2. if … else … 语句

2.1 语法

if 语句可以结合 else 来使用,当布尔表达式计算结果为 false (假)时,else 语句块将会执行。

if .. .else 语句用于有条件地执行两个代码块的其中一个,具体执行哪一个代码块,取决于布尔条件的结果。

if (条件) {
    // 如果条件成立,执行此处代码
} else {
    // 如果条件不成立,执行此处代码
}

2.2 实例

改写上面 if 语句的代码:

public class IfElseStatement1 {
    public static void main(String args[]) {
        int age = 15;
        if(age >= 18) {
            System.out.println("在中国你已经成年");
        } else {
            System.out.println("在中国你还未成年");
        }
    }
}

运行结果:

在中国你还未成年

我们将变量 age 赋值为 15,并且在 if 语句块的后面加了一段 else {...} 语句块。这个时候,条件 age >= 18 的计算结果就为 false 了,程序将会执行 else 语句块中的代码。执行代码,屏幕将会打印 "在中国你还未成年"。


补充


Java 支持使用条件表达式(又称三目运算符)表达式1 ? 表达式2 : 表达式3 来简化 if else 语句的代码。


表达式 1 的作用等同于 if 语句后面的条件,如果表达式 1 为 true, 则执行 表达式2, 否则执行 表达式3


也就是说上面的代码可以使用三目运算符来实现同样的功能。实例如下:

实例演示

public class IfElseStatement2 {
    public static void main(String args[]) {
        int age = 15;
        System.out.println(age >= 18 ? "在中国你已经成年" :  "在中国你还未成年"); 
    }
}

3. if … else if … else 语句

3.1 语法

if 语句可以结合 else if 来实现更复杂的程序分支结构:

if (条件1) {
    // 如果条件1成立,执行此处代码
} else if (条件2) {
    // 如果条件1不成立,并且条件2成立,执行此处代码
} else {
    // 如果条件1、条件2都不成立,执行此处代码
}

3.2 实例

if 语句可以搭配任意多数量的 else if 语句使用,但是只能有一个 else。下面我们来看一段代码:

// 根据给定分数向屏幕打印评级
public class IfElseIfStatement {
    public static void main(String args[]) {
        int score = 70;
        if (score >= 90) {
            System.out.println("优秀");
        } else if(score >= 70) {
            System.out.println("良好");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        } 
    }
} 

运行结果:

良好

运行结果为 "良好",你也许会疑惑,score 为 70,同样也大于等于 60,为什么没有输入 "及格" 呢?

这是由于当程序遇到符合条件的分支就会执行其分支语句块中的语句,不会执行其他分支语句块的语句

3.3 嵌套 if … else 语句

你也可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句:

1. if(if(条件1){
   // 如果条件1为真,执行这里的语句
   if(条件2){
      如果条件2为真,执行这里的语句
   }
}

我们来看一个嵌套语句的实例:

public class IfElseStatement1 {
    public static void main(String[] args) {
        // 初始化整型变量age,值为25
        int age = 25;
        int sex = 1;  // 此处用sex变量表示性别,1:男  2:女
        if(age >= 20) {
            System.out.println("在中国你已经成年");
            if(sex == 2) {
                System.out.println("并且到了法定的结婚年龄");
            }
            if(sex == 1 && age >= 22) {
                System.out.println("并且到了法定的结婚年龄");
            }
        } else {
            System.out.println("在中国你还未成年");
        }
    }
}

运行结果:

1. 在中国你已经成年
2. 并且到了法定的结婚年龄

4. switch 语句

4.1 语法

switch 条件语句可以理解为简写版的多个 if .. else 语句。switch 语句的语法如下:

switch (值) {
    case 值1:
       语句1.1
       ...
     语句n.1
       break;
    case 值2:
        语句2.1
        ...
        语句2.n
        break;
    default:
        语句n.1
        ...
        语句n.n
}

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 语句。

4.2 实例

我们先来看下面的一个简单实例:

public class SwitchStatement1 {
    public static void main(String args[]) {
        int i = 2;
        switch (i) {
          case 1:
              // i 的值不等于1,所以不执行此处代码
              System.out.println("i的值为1");
              break;
          case 2:
              // i 的值等于2,所以执行此处代码
              System.out.println("i的值为2");
              break;
          default:
        // case 2 分支已执行并break,所以此处代码不会执行
              System.out.println("i的值既不等于1,也不等于2");
        }
    }
}

运行结果:

i的值为2

从 JDK5 开始,switch 语句可以与 枚举值一起使用。 例如,下面是根据数字显示对应星期几的实例代码:

public class SwitchStatement2 {
   public static void main(String args[]) {
      Day day = day.MONDAY; // 假设 Day 是一种枚举类型,里面包含星期一到星期天。
      switch (day) {
         case MONDAY :
            System.out.println("星期一"); 
            break;
         case TUESDAY :
            System.out.println("星期二"); 
            break;
         case WEDNESDAY :
            System.out.println("星期三");
            break;
         case THURSDAY :
            System.out.println("星期四");
            break;
         case FRIDAY :
            System.out.println("星期五");
            break;
         case SATURDAY :
            System.out.println("星期六");
            break;
         case SUNDAY :
            System.out.println("星期天");
      }
   }
}

从 JDK8 开始,switch 语句可以与 String 值一起使用:

public class SwitchStatement3 {
   public static void main(String args[]) {
      String day = "TUESDAY";
      switch (day) {
         case "Wednesday" :
            System.out.println("星期一"); 
            break;
         case "TUESDAY" :
            System.out.println("星期二"); 
            break;
         case "WEDNESDAY" :
            System.out.println("星期三");
            break;
         case "THURSDAY" :
            System.out.println("星期四");
            break;
         case "FRIDAY" :
            System.out.println("星期五");
            break;
         case "SATURDAY" :
            System.out.println("星期六");
            break;
         case "SUNDAY" :
            System.out.println("星期天");
      }
   }
}

运行结果:

星期二

5. 小结

在 Java 中,条件语句主要有 if 语句和 switch 语句两种。在实际的编码中,条件语句非常常用,要根据合适的场景选择使用,例如对于多个 == 判断的情况下,使用 switch 语句就更加清晰。而对于复杂的条件表达式,选择 if 语句就更适合。


对于 if 语句的使用,建议:


每个分支都要用 {} 括起来;

当有多个 if ... else 的时候,要注意判断顺序,把可能性越大的分支越排在越前面;

if ... else 语句的嵌套层级不要太深。

对于 switch 语句的使用,建议:


每个分支都不要漏写 break;

总是写上 default 分支。


相关文章
|
8天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
152 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
28天前
|
消息中间件 Java 数据库
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
|
30天前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
52 1
|
30天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
39 0
|
30天前
|
Java 数据库连接 数据处理
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
47 4
|
2月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
1432 1
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
2月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
185 26
|
2月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
90 0
|
2月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
2月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)