【Java SE】程序逻辑控制(上)

简介: 提到分支语句我们都不陌生,比如我们生活中都要面临着种种选择,而每个选择对应着不同的结果,我们的程序也是有许许多多的分支构成的,在Java中为我们提供了两种分支语句:if 和 switch语句,下面我们就来学习下这两个语句。

1、分支语句

提到分支语句我们都不陌生,比如我们生活中都要面临着种种选择,而每个选择对应着不同的结果,我们的程序也是有许许多多的分支构成的,在Java中为我们提供了两种分支语句:ifswitch语句,下面我们就来学习下这两个语句。

1.1 认识 if 语句

这里举一个很简单的双分支语句的例子:张三今天去买彩票,要不中奖了,要不就没有中奖,如果中奖了,那么张三就开心,如果没有中奖张三就不开心,放在程序里面我们怎么表示呢?如果为 ture 真,我们则认为张三中奖,如果为 false 假,我们则认为张三没有中奖,接下来我们来简单实现这个代码:

public class TestDemo {
    public static void main(String[] args) {
        boolean lottery = true;
        if (lottery) {
            System.out.println("happy");
        } else {
            System.out.println("unhappy");
        }
    }
}

如上就是我们很简单的一个 if 语句,其实这里我们用 boolean 类型变量举例就是想告诉大家,if () 括号里面的表达式结果必须得是布尔值,你不能像 C 语言一样写个 1,或者直接 int a = 1; if (a),这样都是不行了,Java中里面一定得是布尔表达式!当然后面的 else 你也可以结合情况而省略。

1.2 两个 if 分支以上的情况

当然,在写代码中,我们不可能只碰到两种情况,可能有多种情况需要我们判断,就比如拿学生考试成绩来说,如果在80分以上为优秀,60分以上为及格,60分以下就不及格,这样我们应该怎么表示呢?我们先来看下三种情况的语法格式:

if (布尔表达式1) {

   //...code1

} else if (布尔表达式2) {

   //...code2

} else {

   //...code3

}

如果表达式1成立执行 code1,如果不成立我们才执行布尔表达式2,如果布尔表达式2成立我们则执行 code2,如果都不成立则执行 code3

public class TestDemo {
    public static void main(String[] args) {
        int a = 30;
        if (a >= 80) {
            System.out.println("优秀");
        } else if (a >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }
}

当然,在这里,你仍然可以结合情况省略最后的 else,虽然 if 可以不需要else,但是 else 绝对不能单独出现,else 必须配合 if 使用!

1.3 if 嵌套的情况

这种情况在我们编程的过程中也难免会碰到, 但是如果有着不良好的代码风格,那可谓是影响代码的可读性,比如:

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        if (a > 0) 
            if (b > 0)
                System.out.println("happy");
        else
            System.out.println("unhappy");
    }
}

这也就是我们常形容的悬空 else,从表面来看,第一时间反应 else 是跟 第一个 if 匹配,但事实不是这样的,在学习C语言应该就学过,else 跟最近的 if 匹配,那么如何才能写出 Java 中良好风格的代码呢?

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        if (a > 0) {
            if (b > 0) {
                System.out.println("happy");
            } else {
                System.out.println("unhappy");
            }
        }
    }
}

在实际开发中,我们更建议这样写,最好都加上大括号,不要特立独行,好的代码不是说让别人看不懂,而是让别人看的舒服,看得懂,性能好这才叫做好代码。

注意:if 表达式后面不要跟分号,这样会导致分号是 if 语句的语句体,而 { } 中的代码已经和 if 无关。

1.4 switch 语句

这个语句使用起来很简单,具体在我们C语言深度解剖专栏有详细介绍,这里的基本语法我们也就不在强调了。

我们来看一段代码:

如上代码我们可以分析出什么呢?

  • switch 也是从上到下执行的,表达式的值找到匹配的case入口才进入
  • 如果没有 break 语句就会一直往下执行,直到遇到 break
  • 当表达式的值,都匹配不上的话,执行 default

这就是为什么之前C语言的时候,也在强调,每个 case 最好带上 break,如果是产品要求,那你可以不带,就好比我们之前写过,1~5输出工作日,6~7输出休息日,那就可以适当的不带上break,具体我们还是要根据实际情况而定。至于 default 这个建议都带上。

1.5 使用 switch 的注意事项

注意:在有多个 case 的时候,case 后面的常量值不能重复!

  • switch() 括号里面只能是如上红框框类型的表达式。
  • switch 的分支很单一,就比如说你要满足一个变量 大于 20 并且 小于 50 才执行某某某,这样用 if 就很方面,而 switch 却做不到,他并不能表达复杂的条件。
  • 在case后面,我们的代码要尽可能的简短,不要写的特别复杂。
  • 虽然 switch 支持嵌套,但是一般很少这样做,既不美观,又影响代码可读性

相关文章
|
10天前
|
缓存 监控 安全
如何提高 Java 高并发程序的性能?
以下是提升Java高并发程序性能的方法:优化线程池设置,减少锁竞争,使用读写锁和无锁数据结构。利用缓存减少重复计算和数据库查询,并优化数据库操作,采用连接池和分库分表策略。应用异步处理,选择合适的数据结构如`ConcurrentHashMap`。复用对象和资源,使用工具监控性能并定期审查代码,遵循良好编程规范。
|
22天前
|
Java 编译器 开发者
Java中的异常处理是确保程序稳定性的关键
Java中的异常处理是确保程序稳定性的关键。本文探讨八大最佳实践:理解异常体系,选用恰当异常类型,提供详细错误信息,精用try-catch,善用finally块,利用try-with-resources简化资源管理,记录异常便于追踪,及避免finally中抛异常。遵循这些原则,提升代码质量和错误管理能力。
13 1
|
24天前
|
Java 开发者
在Java编程的广阔天地中,if-else与switch语句犹如两位老练的舵手,引领着代码的流向,决定着程序的走向。
在Java编程中,if-else与switch语句是条件判断的两大利器。本文通过丰富的示例,深入浅出地解析两者的特点与应用场景。if-else适用于逻辑复杂的判断,而switch则在处理固定选项或多分支选择时更为高效。从逻辑复杂度、可读性到性能考量,我们将帮助你掌握何时选用哪种语句,让你在编程时更加得心应手。无论面对何种挑战,都能找到最适合的解决方案。
26 1
|
24天前
|
搜索推荐 Java 程序员
在Java编程的旅程中,条件语句是每位开发者不可或缺的伙伴,它如同导航系统,引导着程序根据不同的情况做出响应。
在Java编程中,条件语句是引导程序根据不同情境作出响应的核心工具。本文通过四个案例深入浅出地介绍了如何巧妙运用if-else与switch语句。从基础的用户登录验证到利用switch处理枚举类型,再到条件语句的嵌套与组合,最后探讨了代码的优化与重构。每个案例都旨在帮助开发者提升编码效率与代码质量,无论是初学者还是资深程序员,都能从中获得灵感,让自己的Java代码更加优雅和专业。
13 1
|
24天前
|
Java
在Java编程的广阔天地中,条件语句是控制程序流程、实现逻辑判断的重要工具。
在Java编程中,if-else与switch作为核心条件语句,各具特色。if-else以其高度灵活性,适用于复杂逻辑判断,支持多种条件组合;而switch在多分支选择上表现优异,尤其适合处理枚举类型或固定选项集,通过内部跳转表提高执行效率。两者各有千秋:if-else擅长复杂逻辑,switch则在多分支选择中更胜一筹。理解它们的特点并在合适场景下使用,能够编写出更高效、易读的Java代码。
24 1
|
18天前
|
数据采集 人工智能 监控
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
|
19天前
|
Java jenkins Shell
还有人不会启动JAVA程序
还有人不会启动JAVA程序
12 0
|
20天前
|
Java 调度
|
20天前
|
监控 Java API
如何从 Java 程序中查找内存使用情况
【8月更文挑战第22天】
14 0
|
20天前
|
Java