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语句使程序控制返回到调用它的方法。

相关文章
|
1月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
181 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
2月前
|
消息中间件 Java 数据库
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
|
2月前
|
Java 数据库连接 数据处理
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
55 4
|
2月前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
58 1
|
2月前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
53 0
|
14天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
136 60
【Java并发】【线程池】带你从0-1入门线程池
|
3天前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
50 23
|
10天前
|
Java 调度
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
当我们创建一个`ThreadPoolExecutor`的时候,你是否会好奇🤔,它到底发生了什么?比如:我传的拒绝策略、线程工厂是啥时候被使用的? 核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?...不要着急,小手手点上关注、点赞、收藏。主播马上从源码的角度带你们探索神秘线程池的世界...
75 0
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
|
25天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
98 14
|
1月前
|
安全 Java 程序员
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
54 13

热门文章

最新文章