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
猜你喜欢
- BitArray的基础可以看菜鸟编程BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),
- 本文实例讲述了Java简单验证身份证功能。分享给大家供大家参考,具体如下:package org.cxy.csdn.example;impo
- Android中获取资源 id 及资源 id 的动态获取我们平时获取资源是通过 findViewById 方法进行的,比如我们常
- IO流Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的;常用的文件读取用的就是字
- 命令仓库 Ctrl + Shift + A 可以搜集对应命令快捷键1、基础快捷键1.1、无处不在的跳转项目之间的跳转1.1.1、项目项目之间
- JSON.toJSONString()空字段不忽略修改使用JSON.toJSONString(object)方法,返回的json中,默认会将
- 目前很多业务使用微服务架构,服务模块划分有这2种方式:服务功能划分业务划分不管哪种方式,一次接口调用都需要多个服务协同完成,其中一个服务出现
- 什么是RecyclerView关于RecyclerView,是一个主要用于展示和回收View的有一个控件,在官用了一句话来概括Recycle
- Java Function的使用一、方法介绍表示接受一个参数并产生结果的函数。参数类型 T - 函数输入的类型R - 函数的结果类型方法介绍
- Java代码package com.zzx.controller;import com.zzx.model.User;import org.
- 前言今天的文章从下面这张图片开始,这张图片Java开发们应该很熟悉了我们都知道无锁状态是对象头是有位置存储hashcode的,而变为偏向锁状
- 正则表达式是一种描述词素的重要表示方法。虽然正则表达式并不能表达出所有可能的模式(例如“由等数量的 a 和 b 组成的字符串”),但是它可以
- 在实际开发中,我们经常会需要在页面跳转的时候携带路由参数,典型的例子就是从列表到详情页的时候,需要携带详情的 id,以便详情页获取对应的数据
- 一.WebSocket简单介绍WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-d
- SpringCloudStream配置以下配置摘自《SpringCloud微服务实战》,配置主要包括两大部分:Stream配置(基础配置、通
- 在谈 JVM 内存区域划分之前,我们先来看一下 Java 程序的具体执行过程,我画了一幅图。Java 源代码文件经过编译器编译后生成字节码文
- /** * 三角数字: * 比达哥斯拉领导下的古希腊数学家发现了一个有趣的数字序列1, 3, 6, 10, 15, 21,... *
- 请求SpringBoot接受前台参数的六种方式,首先因为从前台发送的请求没有界面的话只能是从地址栏发送并且只能是Get请求,为了测试其他的请
- 在logback.xml中加上该配置,包名如:com.xxx<logger name="packageName"
- /// <summary> /// 遍历Co