Java程序控制逻辑—流程控制
作者:码农洞见? 发布时间:2023-08-28 01:51:18
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种形式,分别是while
、do/while
、for
和foreach
。
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种不同的结构有一个共同点,就是它们都只有一个入口,也只有一个运行出口。这些单一的入口、出口可让程序可控、易读、好维护。
来源:https://blog.csdn.net/pangpengshuai/article/details/122218784


猜你喜欢
- 本文实例讲述了Android基于ImageView绘制的开关按钮效果。分享给大家供大家参考,具体如下: 今天弄了一下用图片绘制开关
- 前言本文的多租户是基于多数据库进行实现的,数据是通过不同数据库进行隔离。下面话不多说,来看看详细的介绍:MyCat 基本配置首先针对多租户配
- springBoot使用事物比较简单,在Application启动类s上添加@EnableTransactionManagement注解,然
- UI设计:实验目的:自主完成一个简单APP的设计工作,综合应用已经学到的Android UI设计技巧,重点注意合理使用布局。实验要求:1.完
- 前言我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的。命令版本:10分钟学会Visual S
- 以前公司的产品已经上线20多年了,主要是维护,也就是改bug。每周我们Team会从Jira上拿我们可以改的bug,因为每个团队负责的业务范围
- 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在AndroidManifest.xml注册ACTION事件<activi
- netty心跳机制示例,使用Netty实现心跳机制,使用netty4,IdleStateHandler 实现。Netty心跳机制,netty
- RestTemplate未设置超时时间,导致RabbitMQ队列大量堆积,消费者假死,不进行消费,类似线程堵塞。排查:从日志排查问题,在从进
- 概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。J
- 谷歌有专门的SDK来完成VR,我这次以一个全景图片的例子来说一下这个SDK实现VR的基本过程,首先全景图片就是百度地图里的那样,能够看到周围
- 简要介绍Retrofit是当前应用非常广泛的网络请求框架,通常结合RxJava来进行网络请求,本文将展示一个采用RxJava+Retrofi
- 前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0
- 简介简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。简单工厂模式通常是定
- Android 读取资源文件实例详解本文主要介绍 Android 读取资源文件,直接从 assets 读取,从 Raw 文件中读取,Inpu
- 1、很多资料说,添加以下代码,可以隐藏地址栏,但我试了很多次,貌似不成功啊。<meta name="apple-mobile
- 此文章是看郭神公众号发的一篇,仅作学习。在modlue gradle中添加compile 'cjt.library.wheel:ca
- 引入依赖<dependency> <groupId>org.apache.tika</groupI
- Android 破解视频App去除广告功能作为一个 * 丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个 * 丝无法忍
- 目录引言配置yml文件创建数据源配置类为每个数据库创建配置类引言今天为大家带来一些非常有用的实战技巧,比如在我们需要对两个数据库进行操作的时