Java基础教程(6)-Java中的流程控制语句

简介: 【4月更文挑战第6天】Java流程控制包括选择(if, switch)、重复(while, do-while, for)和跳转(break, continue, return)语句。选择语句根据条件执行不同路径,if和switch用于单条件和多条件分支。重复语句用于循环,如for循环的初始化、条件和迭代部分,以及while和do-while循环。跳转语句中,break用于立即退出循环,continue结束当前循环迭代,return则从方法中返回。此外,Java的for each循环简化了数组或集合的遍历,但不能控制遍历顺序或索引。

Java中的流程控制语句

Java的程序控制语句分为以下几类:选择,重复和跳转。

  • 根据表达式结果或变量状态选择语句来使你的程序选择不同的执行路径。
  • 重复语句使程序能够重复执行一个或一个以上语句(也就是说,重复语句形成循环)。
  • 跳转语句允许你的程序以非线性的方式执行。

语句块:

语句块是由一对花括号{}括起来的若干条简单的java语句;块确定了变量的作用域,一个块可以包含在另一个块中;

不能再两个嵌套的块中声明同名的变量;

选择语句if和switch

Java支持两种选择语句:if语句和switch语句。这些语句允许你只有在程序运行时才能知道其状态的情况下,控制程序的执行过程。

if语句:

if语句是Java中的条件分支语句。它能将程序的执行路径分为两条。if语句的完整格式如下:

if (condition) statement1; 
else statement2;

其中,if和else的对象都是单个语句(statement),也可以是程序块。条件condition可以是任何返回布尔值的表达式。else子句是可选的。if语句的执行过程如下:

如果条件为真,就执行if的对象(statement1);
否则,执行else的对象(statement2)。
任何时候两条语句都不可能同时执行。

还可以用多个 if … else if … 串联;

它的语法如下:

if(condition) 
statement; 
else if(condition) 
statement; 
else if(condition) 
statement; 
. 
. 
. 
else 
statement;

条件表达式从上到下被求值。一旦找到为真的条件,就执行与它关联的语句,该阶梯的其他部分就被忽略了。如果所有的条件都不为真,则执行最后的else语句。

最后的else语句经常被作为默认的条件,即如果所有其他条件测试失败,就执行最后的else语句。如果没有最后的else语句,而且所有其他的条件都失败,那程序就不做任何动作。

public class DemoControl {
   

    public static void main(String[] args) {
   

        int a =1,b=2;
        if (a>b){
   
            System.out.println("a大于b");
        }else if (a==b){
   
            System.out.println("a等于b");
        }else {
   
            System.out.println("a小于b");
        }

    }

}
switch语句:

switch语句是Java的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。

switch 语句根据 switch (表达式) 计算的结果,跳转到匹配的 case 结果,然后继续执行后续语句,直到遇到 break 结束执行。
switch语句的通用形式如下:

switch (expression) {
    
case value1: 
// statement sequence 
break; 
case value2: 
// statement sequence 
break; 
. 
. 
. 
case valueN: 
// statement sequence 
break; 
default: 
// default statement sequence 
}

switch语句的执行过程如下:

表达式的值与每个case语句中的常量作比较。
如果发现了一个与之相匹配的,则执行该case语句后的代码。
如果没有一个case常量与表达式的值相匹配,则执行default语句
如果没有相匹配的case语句,也没有default语句,则什么也不执行。
在case语句序列中的break语句将引起程序流从整个switch语句退出。

public class DemoControl {
   

    public static void main(String[] args) {
   

        int a = 1,b = 2;
        switch (a+b){
   
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
                break;
            case 4:
                System.out.println(4);
                break;
            default:
                System.out.println("noting");

        }

    }

}

Java 7 中,switch 的参数可以是 String 类型了。到目前为止 switch 支持这样几种数据类型:byte 、short、int 、char 、String 。

循环语句

循环语句就是让计算机根据条件做循环计算,在条件满足时继续循环,条件不满足时退出循环。

Java的循环语句有for,while和 do-while。

while

while语句是Java最基本的循环语句。当它的控制表达式是真时,hile语句重复执行一个语句或语句块。它的通用格式如下:

while(condition) { 
// body of loop 
}

条件condition可以是任何布尔表达式。只要条件表达式为真,循环体就被执行。当条件condition为假时,程序控制就传递到循环后面紧跟的语句行。

do-while

为while语句在循环一开始就计算条件表达式,若开始时条件为假,则循环体一次也不会执行。
有时需要在开始时条件表达式即使是假的情况下,while循环至少也要执行一次。而不是在循环开始时。
Java就提供了这样的循环:do-while循环。do-while循环总是执行它的循环体至少一次,因为它的条件表达式在循环的结尾。它的通用格式如下:

do { 
// body of loop 
} while (condition)

do-while循环总是先执行循环体,然后再计算条件表达式。如果表达式为真,则循环继续。否则,循环结束。对所有的Java循环都一样,条件condition必须是一个布尔表达式。

for

for循环是一个功能强大且形式灵活的结构。下面是for循环的通用格式:

for(initialization; condition; iteration) {
    
// body 
}

for循环的执行过程如下。

  • 第一步,当循环启动时,先执行其初始化部分;初始化表达式仅被执行一次。
  • 下一步,计算条件condition的值。条件condition必须是布尔表达式。它通常将循环控制变量与目标值相比较。如果这个表达式为真,则执行循环体;如果为假,则循环终止。
  • 再下一步执行循环体的反复部分。这部分通常是增加或减少循环控制变量的一个表达式。
  • 接下来重复循环,首先计算条件表达式的值,然后执行循环体,接着执行反复表达式。
  • 这个过程不断重复直到控制表达式变为假。

Java允许你在for循环的初始化部分和反复部分声明多个变量,每个变量之间用逗号分开

在Java中可以使for循环的初始化、条件或者反复部分中的任何或者全部都为空

for( ; ; ) { 
 // ... 
} 
这个循环将始终运行,因为没有使它终止的条件。

Java还提供了另一种 for each 循环:

和 for 循环相比, for each 循环的变量n不再是计数器,而是直接对应到数组的每个元素。 foreach 循环的写法也更简洁。但是, for each 循环无法指定遍历顺序,也无法获取数组的索引

跳转语句

Java 支持 3 种跳转语句:break,continue和return。这些语句把控制转移到程序的其
他部分;

break

使用break语句直接强行退出循环,忽略循环体中的任何其他语句和循环的条件测试。在循环中遇到break语句时,循环被终止,程序控制在循环后面的语句重新开始。

break不是被设计来提供一种正常的循环终止的方法。循环的条件语句是专门用来终止循环的。只有在某类特殊的情况下,才用break语句来取消一个循环

continue

break 会跳出当前循环,也就是整个循环都不会执行了。而 continue 则是提前结束本次循环,直接继续执行下次循环。
在多层嵌套的循环中, continue 语句同样是结束本次自己所在的循环

return

return语句用来明确地从一个方法返回。也就是,return语句使程序控制返回到调用它的方法。

相关文章
|
20天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
1月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
138 26
|
1月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
1月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
1月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
62 0
|
8天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
48 17
|
19天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
4天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
21天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
21天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。