Java程序控制逻辑—流程控制

 更新时间:2022年01月18日 08:40:34   作者:码农洞见   
这篇文章主要介绍了Java程序的控制逻辑流程控制,流程控制中最基本的就是条件执行,也就是说,一些操作只能在某些条件满足的情况下才执行,在一些条件下执行某种操作,在另外一些条件下执行另外的操作,需要的朋友可以参考一下

1 前言

任何一门语言都需要基本的流程控制语句,其思想也符合人类判断问题或做事的逻辑过程。什么是流程控制呢?流程就是做一件事情的顺序,或者说是次序。在程序设计中,流程就是要完成一个功能,而流程控制则是指如何在程序设计中控制完成某种功能的次序。本章将介绍Java语言中关于“流程控制”的使用方法。

2 条件语句

流程控制中最基本的就是条件执行,也就是说,一些操作只能在某些条件满足的情况下才执行,在一些条件下执行某种操作,在另外一些条件下执行另外的操作。Java分支语句主要分为下述两种。

2.1 if

条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句。
使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”。如果该表达式返回的结果为true,则执行其后的语句;如果为false,则不执行if条件之后的语句。if条件语句可分为简单的if条件语句、if…else语句和if…else if多分支语句。

语法1:

if(条件判断表达式){
    语句1
}

说明:在if后面的条件语句中,必须是一个可以转换成boolean型的表达式,这个表达式需要用括号括起来。当表达式的值为true时执行语句1。

语法2:

if(条件判断表达式){
    语句1
}
else{
    语句2
}

说明:表达式为true时执行语句1,表达式为false时执行语句2

语法3:

if(条件判断表达式1){
    语句1
}
else if(条件判断表达式2){
    语句2
}
else if(条件判断表达式3){
    语句3
}
...
else if(条件判断表达式n)
{
    语句N
}
else{
    语句N
}

说明:表达式1为true时执行语句1,表达式1为false时判断表达式2,表达式2为true时执行语句2,表达式2为false时判断表达式3,如此直至表达式n为false,则执行最后一个else后的语句n。

2.2 switch

在进行多重选择的时候,过多if-else-if条件选择语句的嵌套会造成程序维护上的困扰。在Java语言中提供了switch条件选择语句,使用它可以让程序更加简洁清楚。与if条件选择语句不同的是,switch只有一个条件判断表达式。switch是一种多选一的条件选择语句,它是按照条件判断表达式的运算结果来决定在多个程序分支中选择其中之一的程序分支,并执行这个程序分支内的程序代码。

switch条件选择语句的语法如下:

switch (表达式) {
    case 数值1:语句1;break;
    case 数值2:语句2;break;
    case 数值3:语句3;break;    
    ...
    default:语句0;
}

说明:switch的表达式类型为整型(包括byte、short、char、int等)、字符类型及枚举类。switch语句将从与选项值相匹配的case标签处开始执行直到遇到break语句,或者执行到switch语句的结束处为止。如果没有相匹配的case标签,而有default子句,就执行这个子句。

3 循环语句

所谓循环,就是多次重复执行某些类似的操作,这个操作一般不是完全一样的操作,而是类似的操作。循环语句是程序开发非常重要,也是使用频率很高的一个技能点。在Java中,循环有4种形式,分别是whiledo/whileforforeach

3.1 while

while 循环的形式是:

while(布尔表达式) {
    语句块; //可以是单条语句, 也可以是复合语句
}

执行语句会在每一次循环前,判断布尔表达式返回值是否为 true

3.2 do-while

do-while循环语句的一般格式如下:

do{
语句块;
} while(布尔表达式);

do…while语句与while语句不同的是,它先执行大括号内的循环体,再判断条件,如果条件不满足,下次不再执行循环体。也就是说,在判断条件之前,就已经执行大括号内的循环体。

3.3 for

for 循环可能是最常用的迭代形式。 该循环在第一次迭代之前执行初始化。随后,它会执行布尔表达式,并在每次迭代结束时,进行某种形式的步进。for 循环的形式是:

for(初始化表达式;循环条件;迭代语句) {
   循环体;
}

初始化语句是循环的初始状态,循环条件是条件判断的布尔表达式,如果表达式的值为true,则执行后面的语句,接下来执行后面的迭代语句。如果条件判断表达式第一次求值就为false,那么for循环不会进行任何的迭代,后面的循环体和迭代语句也不会执行任何操作。
一次循环结束后,下一次循环开始前,执行迭代部分的语句,然后判断循环条件表达式的值,决定是否进行下一次循环。

3.4 for-in

Java 5 引入了更为简洁的“增强版 for 循环”语法来操纵数组和集合。for-in 语法可以节省我们编写代码的时间。 更重要的是,它提高了代码可读性以及更好地描述代码意图而不是详细说明这操作细节。

for-in的语句格式如下:

for(元素类型 元素变量 : 遍历对象){   
    循环体;
}

大部分文档也称其为for-each 语法,但因为了不与 Java 8 新添的 forEach() 产生混淆,因此我称之为 for-in 循环。

4 循环控制

在任何迭代语句的主体内,都可以使用 break continue 来控制循环的流程。 其中,break 表示跳出当前循环体。而 continue 表示停止本次循环,开始下一次循环。

4.1 break

break语句通常用在循环语句和开关语句中,例如用在开关语句switch中,break语句可以使程序跳出switch而执行switch以后的语句,以防止程序进入死循环而无法退出。当break语句用于do…while、for、while循环语句中时,可使程序终止循环。

4.2 continue

continue语句用来略过循环中剩下的语句,停止当前迭代,重新开始新的循环,这和break语句的完全跳出循环是不一样的。continue仅仅出现在while、do…while、for语句的子语句块中。也可以使用标签来选择需要终止的嵌套循环的层级。

5 码农洞见

5.1 GOTO语句有害论

程序之所以能够按照人们的意愿执行,主要依靠的是程序的控制结构。早期的程序员广泛使用GOTO语句,它破坏了程序设计结构性,导致程序流程的混乱,使理解和调试程序都产生困难。1968年Dijkstra等人发表了著名的论文《GOTO语句有害论》,即“所有有意义的程序流程都可以使用三种基本的结构来构成”。自此人们的编程方式发生重大变化正是这个原因,在Java程序设计中,虽然goto作为关键字保留了下来,但是一直没有启用。

5.2 结构化程序设计

结构化程序设计(Structured programming)是一种经典的编程模式,它强调用模块化、积木式的方法来建立程序。采用结构化程序设计方法,可使程序的逻辑结构清晰、层次分明、可读性好、可靠性强,从而提高了程序的开发效率,保证了程序质量,改善了程序的可靠性。
一般来说程序的结构包含以下3种。
(1)顺序结构。
(2)选择结构。
(3)循环结构。
这3种不同的结构有一个共同点,就是它们都只有一个入口,也只有一个运行出口。这些单一的入口、出口可让程序可控、易读、好维护。

到此这篇关于Java程序控制逻辑—流程控制的文章就介绍到这了,更多相关Java流程控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot 启动之后初始化资源的几种方法

    Springboot 启动之后初始化资源的几种方法

    在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等,本文主要介绍了Springboot 启动之后初始化资源的几种方法,感兴趣的可以了解一下
    2024-01-01
  • Springboot 整合 Java DL4J 实现农产品质量检测系统(推荐)

    Springboot 整合 Java DL4J 实现农产品质量检测系统(推荐)

    本文详细介绍了系统的搭建过程,包括技术选型、数据处理、模型训练和评估等关键步骤,系统采用卷积神经网络,对水果成熟度和缺陷进行识别,有效解决了传统方法成本高、效率低的问题,有助于提升农产品检测的科技含量和自动化水平
    2024-10-10
  • Spring Boot集成Spring Cloud Eureka进行服务治理的方法

    Spring Boot集成Spring Cloud Eureka进行服务治理的方法

    本文通过详细的步骤和代码示例,介绍了如何在Spring Boot中集成Spring Cloud Eureka进行服务治理,通过这种方式,可以有效地管理和维护微服务架构中的服务,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • 手动构建springBoot启动器过程图解

    手动构建springBoot启动器过程图解

    这篇文章主要介绍了手动构建springBoot启动器过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Springboot集成Tika实现文档解析

    Springboot集成Tika实现文档解析

    Tika是一款Apache开源的,跨平台,支持多品种文本类型的内容检测和提取工具,本文将介绍Springboot如何集成Tika实现文档解析,需要的可以参考下
    2024-11-11
  • Java 后端接收Request请求参数的多种方式汇总

    Java 后端接收Request请求参数的多种方式汇总

    本文给大家总结了后端接收Request请求参数的7种方式,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10
  • Spring中@Autowired @Resource @Inject三个注解有什么区别

    Spring中@Autowired @Resource @Inject三个注解有什么区别

    在我们使用Spring框架进行日常开发过程中,经常会使用@Autowired, @Resource, @Inject注解来进行依赖注入,下面来介绍一下这三个注解有什么区别
    2023-03-03
  • Java多线程之深入理解ReentrantLock

    Java多线程之深入理解ReentrantLock

    这篇文章主要介绍了Java多线程之深入理解ReentrantLock,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 浅析Java中print、printf、println的区别

    浅析Java中print、printf、println的区别

    以下是对Java中print、printf、println的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • Spring Boot 调用外部接口的几种方式

    Spring Boot 调用外部接口的几种方式

    在微服务架构中,服务间的调用是不可或缺的环节,本文主要介绍了Spring Boot调用外部接口的几种方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05

最新评论