Java 每日一刊(第8期):流程控制

news2024/9/22 5:30:10

“计算机程序本质上是艺术的一种表现形式。”

前言

这里是分享 Java 相关内容的专刊,每日一更。

本期将为大家带来以下内容:

  1. 条件控制语句
  2. 循环控制语句
  3. 跳转控制语句

条件控制语句

条件控制语句用于 根据条件判断执行不同的代码块,是编程中最基本的流程控制结构。Java 主要提供以下条件控制语句:

  1. if-else 语句
  2. 多重 if-else
  3. 三元运算符(简化条件判断)
  4. switch-case 语句

if-else 语句

if-else 语句根据给定的条件表达式是否为真来决定执行哪个代码块。其基本结构如下:

if (condition) {
    // 当 condition 为 true 时执行
} else {
    // 当 condition 为 false 时执行
}

示例:

int age = 18;
if (age >= 18) {
    System.out.println("老年人");
} else {
    System.out.println("年轻人");
}

多重 if-else

当有多个条件需要判断时,可以使用 else if 结构:

int score = 75;
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

三元运算符(简化条件判断)

三元运算符(?:)是 if-else 的简写,用于简单的条件判断:

int a = 5;
int b = 10;
int max = (a > b) ? a : b; // 如果 a 大于 b,则 max 等于 a,否则等于 b

switch-case 语句

switch-case 语句用于在多个值之间进行匹配,替代大量的 if-else 语句,通常适用于枚举类型、整数、字符串等类型的匹配。

switch (expression) {
    case value1:
        // 当 expression == value1 时执行
        break;
    case value2:
        // 当 expression == value2 时执行
        break;
    default:
        // 当没有匹配的值时执行
}

示例:

int day = 2;
switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    default:
        System.out.println("未知的日期");
}

注意:

  • 每个 case 后都需要 break,否则程序会继续执行后续的 case 代码块,导致 “贯穿现象”
  • switch 支持的数据类型包括 intcharString 和枚举类型(enum),但不支持浮点数(floatdouble)。

循环控制语句

循环语句用于重复执行一段代码,直到满足退出条件为止。Java 提供了三种主要的循环结构:forwhiledo-while

for 循环

for 循环一般用于已知循环次数的场景,其结构包括初始化、条件判断和迭代更新部分:

for (initialization; condition; update) {
    // 循环体
}

示例:

for (int i = 0; i < 5; i++) {
    System.out.println("i = " + i);
}

增强型 for 循环

增强型 for 循环(或称 for-each)专门用于遍历数组或集合,它的语法更加简洁:

for (type variable : arrayOrCollection) {
    // 对 variable 进行操作
}

示例:

int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    System.out.println(num);
}

while 循环

while 循环在每次循环开始时都会判断条件,条件为 true 时继续执行循环体,否则退出循环。

while (condition) {
    // 循环体
}

示例:

int i = 0;
while (i < 5) {
    System.out.println("i = " + i);
    i++;
}

do-while 循环

do-while 循环与 while 的区别在于,它先执行循环体,然后再判断条件,即使条件不成立,循环体也会至少执行一次。

do {
    // 循环体
} while (condition);

示例:

int i = 0;
do {
    System.out.println("i = " + i);
    i++;
} while (i < 5);

循环中的常见陷阱

死循环:当循环条件永远不成立或没有正确更新时,程序会进入死循环,导致无限执行。常见的死循环如下:

while (true) {
    // 这种情况下,除非手动终止或内部有跳出条件,否则程序会无限循环
}

错误的更新条件:忘记更新循环变量或条件可能导致循环无法终止。例如:

int i = 0;
while (i < 5) {
    System.out.println(i);
    // 忘记更新 i,循环将一直打印 i = 0
}

跳转控制语句

跳转控制语句用于中断或调整循环的执行顺序,常见的有 breakcontinuereturn

break 语句

break 用于立即退出当前循环或 switch 语句。在循环中使用 break 会跳出当前的整个循环,而不是只跳过一次迭代。例如:

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break; // 当 i == 3 时跳出整个循环
    }
    System.out.println("i = " + i);
}

输出结果:

i = 0
i = 1
i = 2

标签 break 语句

在多层嵌套的循环中,普通 break 只能跳出最近的循环。如果需要跳出指定的外层循环,可以使用带标签的 break

outerLoop: for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        System.out.println("i = " + i + ", j = " + j);
        if (j == 2) {
            break outerLoop; // 跳出 outerLoop
        }
    }
}

输出结果:

i = 0, j = 0
i = 0, j = 1
i = 0, j = 2

continue 语句

continue 用于跳过当前循环的剩余部分,直接开始下一次迭代。它不终止循环,而是跳到下一个迭代。例如:

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue; // 跳过 i == 3 时的输出
    }
    System.out.println("i = " + i);
}

输出结果:

i = 0
i = 1
i = 2
i = 4

return 语句

return 语句用于从方法中返回一个值,并结束方法的执行。在 void 方法中,return 可以提前终止方法的执行。例如:

public int add(int a, int b) {
    return a + b; // 返回两个数的和
}

void 方法中:

public void checkNumber(int number) {
    if (number < 0) {
        System.out.println("负数");
        return; // 提前终止方法
    }
    System.out.println("正数");
}

本期小知识

有时在 if 语句中可以通过连环赋值进行判断和操作,这是很多初学者忽略的小技巧:

int a, b;
if ((a = 5) == (b = 5)) {
    System.out.println("a 和 b 相等,值都为: " + a);
}

这种方式在实际代码中不常见,但偶尔会作为一种简写,需注意代码可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

COMP 6714-Info Retrieval and Web Search笔记week1

哭了哭了&#xff0c;这周唯一能听懂的就这门 目录 IR&#xff08;Information Retrieval)是什么&#xff1f;IR的基本假设Unstructured (text) vs. structuredDocuments vs. Database Records比较文本&#xff08;Comparing Text&#xff09;IR的范围(Dimensions of IR)IR的任…

【目标检测数据集】锯子数据集1107张VOC+YOLO格式

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1107 标注数量(xml文件个数)&#xff1a;1107 标注数量(txt文件个数)&#xff1a;1107 标注…

如何使用myabtis log plugin插件展示出数据库查询语句

1、安装myabtis log plugin插件 直接插件市场搜该插件进行安装就行&#xff0c;安装完成后&#xff0c;会有如下图标 2、需要集成log4j springboot版本需要集成log4j&#xff0c;集成遇到的问题可以参考我之前文章 3、配置log4j.xml文件&#xff0c;添加mapper文件的打印 &l…

软考高级:存储系统 DAS、NAS、SAN 区别 - AI 解读

DAS&#xff08;直接附加存储&#xff09;、NAS&#xff08;网络附加存储&#xff09;和SAN&#xff08;存储区域网络&#xff09;是三种常见的数据存储架构&#xff0c;主要用于不同场景下的数据存储和管理。我们可以从它们的架构、用途以及优缺点来理解。 生活化例子 想象一…

标准库标头 <bit>(C++20)学习

<bit>头文件是数值库的一部分。定义用于访问、操作和处理各个位和位序列的函数。例如&#xff0c;有函数可以旋转位、查找连续集或已清除位的数量、查看某个数是否为 2 的整数幂、查找表示数字的最小位数等。 类型 endian (C20) 指示标量类型的端序 (枚举) 函数 bit_ca…

阿里云 Quick BI使用介绍

Quick BI使用介绍 文章目录 阿里云 Quick BI使用介绍1. 创建自己的quick bi服务器2. 新建数据源3. 上传文件和 使用4. 开始分析 -选仪表盘5. 提供的图表6. 一个图表的设置使用小结 阿里云 Quick BI使用介绍 Quick BI是一款全场景数据消费式的BI平台&#xff0c;秉承全场景消费…

文学智能体——摄影皮卡丘

前言 今天尝试进行智能体创建&#xff0c;我想创建什么呢&#xff0c;旅游的话&#xff0c;除了美食那就是摄影啦&#xff0c;那我就创建个皮卡丘吧&#xff0c;就决定是你啦&#xff0c;摄影皮卡丘&#xff01; 一、创建智能体 那怎么创建一个皮卡丘呢&#xff0c;那就使用…

cc2530按键中断实现控制LED

1开启中断的步骤 1-1使能端口组的中断 IEN1 IEN2 实例 IEN2 | 0x10 //使能P1口中断 1-2 端口中断屏蔽 P0IEN和P1IEN P2IEN 实例 P1IEN |0x10&#xff1b; //使能P1_2口中断 1-3设置触发方式 PICTL 实例 PICTL |0X02 ;//P1_3到P1_2口下降沿触发 1-4设置中断优先级…

解决:Vue 中 debugger 不生效

目录 1&#xff0c;问题2&#xff0c;解决2.1&#xff0c;修改 webpack 配置2.2&#xff0c;修改浏览器设置 1&#xff0c;问题 在 Vue 项目中&#xff0c;可以使用 debugger 在浏览器中开启调试。但有时却不生效。 2&#xff0c;解决 2.1&#xff0c;修改 webpack 配置 通…

【webpack4系列】webpack构建速度和体积优化策略(五)

文章目录 速度分析&#xff1a;使用 speed-measure-webpack-plugin体积分析&#xff1a;使用webpack-bundle-analyzer使用高版本的 webpack 和 Node.js多进程/多实例构建资源并行解析可选方案使用 HappyPack 解析资源使用 thread-loader 解析资源 多进程并行压缩代码方法一&…

掌握远程管理的艺术:揭秘Python的pywinrm库

文章目录 &#x1f525; 掌握远程管理的艺术&#xff1a;揭秘Python的pywinrm库 &#x1f525;背景&#xff1a;为何选择pywinrm&#xff1f;pywinrm库简介安装pywinrm库简单库函数使用方法场景应用常见问题与解决方案总结 &#x1f525; 掌握远程管理的艺术&#xff1a;揭秘Py…

gingivitis

gingivitis 牙龈炎 1&#xff09;这个是啥不知道 2&#xff09;七叶莲片 3&#xff09;甲硝唑芬布芬胶囊 4&#xff09;盐酸左氧氟沙星胶囊 5&#xff09;纳珍 开始学习记录医生开的药。日常备药记录一下。【不要乱吃药哈】

C++ | Leetcode C++题解之第409题最长回文串

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindrome(string s) {unordered_map<char, int> count;int ans 0;for (char c : s)count[c];for (auto p : count) {int v p.second;ans v / 2 * 2;if (v % 2 1 and ans % 2 0)ans;}retur…

C语言进阶版第10课—qsort函数排序

文章目录 1. 回调函数2. qsort排序函数&#xff08;定义&#xff09;3. bubble冒泡函数4. qsort函数对整型数组排序5. qsort函数对字符指针数组排序6. qsort函数对结构体数组排序7. 模拟实现qsort排序函数7.1 模拟实现排序整型数组7.2 模拟实现排序结构体数组 8. 结构体访问 1.…

数据库事务中的四大问题:脏读、脏写、不可重复读与幻读详解

数据库事务中的四大问题&#xff1a;脏读、脏写、不可重复读与幻读详解 什么是脏读 定义 事务B读取数据时&#xff0c;读取到的是事务A更新之后&#xff0c;但还未提交的数据。 事务A修改了一条数据&#xff0c;但是还没有提交时&#xff0c;事务B查询到了这条未提交的数据…

火语言RPA流程组件介绍--下拉框选择

&#x1f6a9;【组件功能】&#xff1a;勾选下拉框选项 配置预览 配置说明 丨目标元素 支持T或# 默认FLOW输入项 通过自动捕获工具捕获(选择元素工具使用方法)或手动填写网页元素的css,xpath&#xff0c;指定对应网页元素作为操作目标 丨值 支持T或# 选中目标的值&#xf…

Leetcode 第 413 场周赛题解

Leetcode 第 413 场周赛题解 Leetcode 第 413 场周赛题解题目1&#xff1a;3274. 检查棋盘方格颜色是否相同思路代码复杂度分析 题目2&#xff1a;3275. 第 K 近障碍物查询思路代码复杂度分析 题目3&#xff1a;3276. 选择矩阵中单元格的最大得分思路代码复杂度分析 题目4&…

【SpringCloud】Spring Cloud 开发环境搭建与基础工程构建

目录 环境和工程搭建开发环境安装JDKJDK版本介绍JDK17安装WindowsLinux - UbuntuLinux - CentOs MySQL安装UbuntuCentOS 案例介绍需求服务拆分服务拆分原则服务拆分示例 数据准备工程搭建构建父子工程创建父工程DependencyManagement 和 DependenciesSpring Cloud版本 创建子项…

【生日视频制作】奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字软件一键生成器教程特效素材【AE模板】

生日视频制作教程奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程 AE模板套用改图文教程↓↓&#xff1a; 怎么如何做的【生日视频制作】奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字软件一键生成器教程特效素材【AE模…

下一代 AI 搜索:多智能体 + 系统2,解决 AI 搜索在复杂信息性能下降问题

下一代 AI 搜索&#xff1a;多智能体 系统2&#xff0c;解决 AI 搜索在复杂信息性能下降问题 AI 搜索&#xff1a;从搜索引擎到答案引擎① AI 搜索市场现状&#xff08;可跳过&#xff09;② 巨好用的 AI 工具推荐程序员的垂直搜索引擎 devv.ai ③ 多智能体 系统2&#xff0c…