第六章: Java 流程控制之必会的if和else分支语句,来看看吧

2024-06-07 23:12

本文主要是介绍第六章: Java 流程控制之必会的if和else分支语句,来看看吧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

今天开始,我们正式进入Java流程控制的讲解. 在"架构整洁之道"一书中提到,早在上个世纪五六十年代. BohmJocopin就证明了可以用"顺序结构","分支结构", "循环结构"这三种结构造成任何程序.目前几乎所有的程序都采用这三种流程控制.

其实我们开学习,开发过程中, 经常听到的所谓编程思维. 而流程控制在编程思维中占有很基础很重要的地位. 即你如何控制程序的运行.

"顺序结构"不言而喻就是代码按照从上到下依次执行.那么我们就从分支语句开始讲解.分支语句中最常见的就是if...else条件分支语句.

接下来我们先认知一下流程控制的不同结构


1. 流程控制

1.1. 简介

Java项目中, 都是以英文分号;作为代码语句的结束符. 多条语句的执行顺序默认按照"顺序结构"执行. 早在程序最初的纸带打孔时代, 程序就是如此执行的. 但只有这一种控制结构, 程序将无法实现更复杂的场景. 比如需要根据添加判断,执行不同的程序, 或跳转到指定的程序执行, 该如何处理.

后来就出现了goto语句, 跳转到指定代码行执行代码. 但早期的程序员已经论证过 goto语句的危害性. 他们也论证了"顺序结构""流程控制结构(分支与循环)"组合起来就可以实现程序模块的运行最小控制集. 结构化编程也因此到来.

所以我们学习流程控制语句, 更多的是在"分支结构",和"循环结构"上. "顺序结构"是程序默认执行逻辑.


1.2. 分类

Java中的流程控制语句, 根据结构化程序设计规范, 整体上分为三大类

  • 顺序结构
  • 分支结构
  • 循环结构

其实这些流程控制逻辑早在我们高中时就已经学习过了, 就是数学中的流程图.你不妨回顾一下.

我们首先来看一下, 不同流程控制结构中, 程序执行的逻辑.


1.3. 顺序结构

顺序结构可以说是项目中最简单, 最基本的流程控制语句了. 没有什么特殊的语法. 程序按照先后顺序编写即可. 程序默认按照先后顺序执行. 因此程序中大多数代码都是顺序执行.

顺序结构的流程图如下:

请添加图片描述

示例代码:

// 测试代码:
public class Test {public static void main(String[] args) {//换行输出System.out.println("Hello");System.out.println("World");}
}

运行结果:
请添加图片描述

如果你此时调换换行语句的顺序, 代码运行结果也将变化.


1.4. 分支结构

所谓的分支结构 , 就是根据条件判断, 有选择的执行代码块中的代码. 在Java中, 分支结构包括if...else..语句和switch...case两种条件分支语句.

我们先看一下分支结构流程图, 理解分支结构的逻辑:
请添加图片描述


1.5. 循环结构

循环结构就是在条件满足的情况下, 反复执行特定的代码.在Java中包括while, do...while, for, foreach等不同的循环语句

带大家看一下循环结构的流程图:
请添加图片描述


2. 条件分支之if…else

前面我们也讲到, 条件分支包括两种语法结构. 而本章主要对if...else语句进行重点分析;


2.1. if 单分支条件判断

if...else语句最基本的结构就是if 单分支结构. 在单分支结构中我们将不使用else分支. 在单分支语句中, 当条件判断为真时, 执行分支代码. 否则就不执行.

其单分支语法格式如下

if(条件表达式){代码块;
}

说明:

  • 条件表达式结果必须是一个布尔值,或者本身就是一个布尔类型的变量
  • 当条件表达式结果为true 执行代码块中的语句, false 则不执行

单分支语句流程图
请添加图片描述


示例代码:

// 年龄满18 就可以考驾照了
int age = 18;// 判断年龄是否大于等于18
if(age >= 18){System.out.println("你的年龄已经满足要求,可以考驾照了");
}

2.2. if… else 双分支条件判断

双分支条件判断使用else, else表示否则, 即当前面条件不满足的情况下执行else对应的代码块.

语法格式

if(条件表达式){代码块1;
}else{代码块2
}

说明:

  • 根据条件表达式的结果(true 或 false),判断执行代码块1代码块2
  • 当条件表达式结果为true 时执行代码块1, false 时执行代码块2

具体的流程图如下:
请添加图片描述


示例代码:

// 年龄满18 就可以考驾照了
int age = 18;// 判断年龄是否大于等于18
if(age >= 18){System.out.println("你的年龄已经满足要求,可以考驾照了");
}else{// 否则: 表示年龄小于18岁System.out.println("你的年龄不满足要求, 不能考驾照");
}

2.3. if… else if… else 多分支条件判断

多分支结构 本质就是通过多个条件行程多条通路. 根据条件进入某一条分支进行执行.
多分支采用else if , 也就是我们常说的 否则如果 , 表示第一个条件不满足情况下, 进入第二个条件判断. 依次类推形成多条分支结构.


语法格式:

if(条件表达式1){代码块1;
}else if(条件表达式2){代码块2;// ....
}else{代码块3;
}

说明:

  • 首先会判断条件表达式1, 当判断结果为true时, 则执行代码块1,
  • 条件表达式1的结果为false时, 则会判断条件表达式2, 当条件2true时, 执行代码块2
  • 条件表达式2的结果为false时, 则会继续判断后面的条件
  • 当所有都有的判断条件都为false时, 则会执行else中的代码块

具体流程图如下:
请添加图片描述


示例代码:

// 考试成绩
int score = 98;if(score >= 90){System.out.println("成绩优秀!");
}else if(score >= 70){System.out.println("成绩良好!");
}else if(score >= 60){System.out.println("成绩及格!");
}else{System.out.println("成绩不及格及格!");
}

2.4. if…else 嵌套使用

if...else语句的代码块中,可以嵌套另外一个if...else条件分支语句 , 形成嵌套结构

执行的特点:

  • 如果是嵌套在if代码块中的,只有当外部的if条件满足,才会去判断内部的条件
  • 如果是嵌套在else代码块中的,只有当外部的if条件不满足,进入else后,才会去判断内部的条件

示例代码:

// 判断三个数字的大小
int num1 = 23,num2 = 32,num3 = 12;if(num1 >= num2){if(num3 >= num1)System.out.println(num2 + "-" + num1 + "-" + num3);else if(num3 <= num2)System.out.println(num3 + "-" + num2 + "-" + num1);elseSystem.out.println(num2 + "-" + num3 + "-" + num1);
}else{ if(num3 >= num2){System.out.println(num1 + "-" + num2 + "-" + num3);}else if(num3 <= num1){System.out.println(num3 + "-" + num1 + "-" + num2);}else{System.out.println(num1 + "-" + num3 + "-" + num2);}
}

2.5. 其他说明:

  • 代码块中只有一条执行语句时,一对{}可以省略,但是建议保留
  • if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

3. 结语

至此, 就把流程控制中第一种条件分支语句(if..else)给大家讲解完毕了.

到此,你需要能够理解程序的三种, 准确的说是两种流程控制, 即分支结构和循环结构.掌握条件分支结构中if...else语句的几种使用方式.

这篇关于第六章: Java 流程控制之必会的if和else分支语句,来看看吧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040575

相关文章

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

详细分析Springmvc中的@ModelAttribute基本知识(附Demo)

目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单处理:通过 @ModelAttribute 将表单数据绑定到模型对象上预处理逻辑:在请求处理之前

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus

22.手绘Spring DI运行时序图

1.依赖注入发生的时间 当Spring loC容器完成了 Bean定义资源的定位、载入和解析注册以后,loC容器中已经管理类Bean 定义的相关数据,但是此时loC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况 发生: 、用户第一次调用getBean()方法时,loC容器触发依赖注入。 、当用户在配置文件中将<bean>元素配置了 lazy-init二false属性,即让