掌握Java控制流:编程决策的艺术

控制流语句是用来 控制程序执行顺序 的关键工具,它们允许你根据不同的条件执行不同的代码块,或者重复执行某段代码。这使得程序能够根据输入和情况做出智能的决策,而不仅仅是线性的执行。

1. 条件语句 (Conditional Statements)

条件语句允许你根据 布尔表达式(true 或 false) 的结果来决定执行哪部分代码。

1.1 if 语句

最基本的条件语句,用于在条件为真时执行一段代码。

语法:

if (condition) {// 当 condition 为 true 时执行的代码块
}

示例:

int score = 85;
if (score >= 60) {System.out.println("恭喜,你及格了!");
}

1.2 if-else 语句

if 的条件为假时,你可以提供一个 else 块来执行另一段代码。

语法:

if (condition) {// 当 condition 为 true 时执行的代码块
} else {// 当 condition 为 false 时执行的代码块
}

示例:

int temperature = 25;
if (temperature > 30) {System.out.println("天气很热,注意防暑!");
} else {System.out.println("天气舒适。");
}

1.3 if-else if-else 语句

用于处理多个条件判断,按顺序检查条件,一旦某个条件为真,就执行对应的代码块,然后跳出整个 if-else if-else 结构。

语法:

if (condition1) {// 当 condition1 为 true 时执行
} else if (condition2) {// 当 condition1 为 false,且 condition2 为 true 时执行
} else if (condition3) {// 当 condition1, condition2 都为 false,且 condition3 为 true 时执行
} else {// 当以上所有条件都为 false 时执行
}

示例:

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

1.4 switch 语句

switch 语句提供了一种更简洁的方式来根据一个 变量(通常是整型、字符型或枚举类型) 的值执行不同的代码块。

语法:

switch (expression) {case value1:// 当 expression 等于 value1 时执行的代码break; // 退出 switch 语句case value2:// 当 expression 等于 value2 时执行的代码break;// ... 更多 casedefault: // 可选// 当 expression 不匹配任何 case 时执行的代码
}

重要说明:

  • break 语句非常重要!它用于 终止 switch 语句的执行。如果没有 break,程序会 “穿透” (fall-through) 到下一个 case 继续执行,这通常不是我们想要的。

  • default 块是可选的,用于处理所有 case 都不匹配的情况。

示例:

char grade = 'B';
switch (grade) {case 'A':System.out.println("优秀!");break;case 'B':System.out.println("良好!");break;case 'C':System.out.println("及格!");break;default:System.out.println("需要努力!");
}

2. 循环语句 (Looping Statements)

循环语句允许你 重复执行一段代码,直到满足某个条件为止。

2.1 for 循环

for 循环通常用于 已知循环次数 的情况。它包含三个部分:初始化、条件和迭代。

语法:

for (initialization; condition; iteration) {// 循环体:当 condition 为 true 时重复执行的代码
}

示例:

// 打印 1 到 5
for (int i = 1; i <= 5; i++) {System.out.println("当前数字: " + i);
}

增强 for 循环 (For-Each Loop): 用于遍历数组或集合中的元素,更加简洁。

语法:

for (dataType element : arrayOrCollection) {// 对 element 进行操作
}

示例:

int[] numbers = {10, 20, 30, 40, 50};
for (int num : numbers) {System.out.println(num);
}

2.2 while 循环

while 循环在 循环条件为真时 不断地重复执行代码块。它只包含一个条件。

语法:

while (condition) {// 当 condition 为 true 时重复执行的代码块// 必须有逻辑来最终使 condition 变为 false,否则会造成死循环
}

示例:

int count = 0;
while (count < 3) {System.out.println("循环次数: " + count);count++; // 必须有这行,否则是死循环
}

2.3 do-while 循环

do-while 循环与 while 循环类似,但 至少会执行一次循环体,然后再根据条件判断是否继续循环。

语法:

do {// 循环体:至少执行一次// 必须有逻辑来最终使 condition 变为 false
} while (condition); // 注意这里的分号

示例:

int num = 5;
do {System.out.println("执行 do-while 循环,num = " + num);num--;
} while (num > 0);

3. 跳转语句 (Jump Statements)

跳转语句用于 改变程序的正常执行流程

3.1 break 语句

  • 循环语句 中:用于 立即终止整个循环,程序将跳到循环体外的下一条语句。

  • switch 语句 中:用于 立即终止 switch 语句

示例(在循环中):

for (int i = 0; i < 10; i++) {if (i == 5) {break; // 当 i 等于 5 时,跳出 for 循环}System.out.println(i);
}
// 输出: 0, 1, 2, 3, 4

3.2 continue 语句

continue 语句用于 跳过当前迭代的剩余部分,直接进入下一次迭代(执行循环的更新部分,并重新检查条件)。

示例:

for (int i = 0; i < 10; i++) {if (i % 2 == 0) { // 如果 i 是偶数continue; // 跳过这次循环的剩余部分,直接进行下一次迭代}System.out.println(i); // 只会打印奇数
}
// 输出: 1, 3, 5, 7, 9

3.3 return 语句

return 语句用于 退出当前的方法,并将一个值(如果方法有返回值)返回给调用者。我们后面学习方法时会详细讲。

4. 总结:控制流语句

你已经成功掌握了 Java 中的控制流语句,这为编写更复杂、更智能的程序奠定了坚实的基础。简单来说,控制流语句就像是程序的“大脑”,它们决定了代码执行的顺序、是否重复执行以及在何种条件下执行。

我们回顾一下今天学习的关键内容:

1. 条件语句 (Conditional Statements):

  • if: 在条件为真时执行代码块。

  • if-else: 根据条件真假选择执行不同的代码块。

  • if-else if-else: 处理多个互斥的条件判断。

  • switch: 根据一个变量的值,简洁地选择执行多个代码块之一。

2. 循环语句 (Looping Statements):

  • for: 适用于已知循环次数的场景,包含初始化、条件和迭代。

  • 增强 for (For-Each Loop): 简化了遍历数组或集合的操作。

  • while: 在条件为真时持续循环。

  • do-while: 至少执行一次循环体,然后根据条件判断是否继续。

3. 跳转语句 (Jump Statements):

  • break: 立即终止循环或 switch 语句。

  • continue: 跳过当前循环迭代的剩余部分,进入下一次迭代。

  • return: 退出当前方法(我们将在后续学习方法时深入探讨)。

掌握了这些控制流语句,你就能让你的 Java 程序具备“思考”和“决策”的能力,能够根据不同的情况做出不同的反应,编写出更具动态性和灵活性的代码。

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

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

相关文章

Docker 安装 MySQL 和 Redis 完整指南

前言 在开发环境中,使用 Docker 安装数据库服务是一种快速、便捷的方式。本文将详细介绍如何在 macOS 上使用 Docker 安装 MySQL 和 Redis,并解决国内网络访问 Docker Hub 的问题。 环境准备 macOS 系统 Docker Desktop 已安装 网络连接 配置 Docker 国内镜像源 方法一:通…

Spring Boot---自动配置原理和自定义Starter

1.自动配置原理2.自定义starter①dmybatis-spring-boot-autoconfigure步骤一&#xff1a;先创建项目步骤二&#xff1a;导入响应的依赖步骤三&#xff1a;创建自动配置的配置类步骤四&#xff1a;创建配置文件项目结构②dmybatis-spring-boot-starter步骤一&#xff1a;先创建项…

【后端】MySQL 常用 SQL 语句大全

整理一份 MySQL 常用 SQL 语句大全&#xff0c;从基础操作到进阶查询&#xff0c;都涵盖。方便日常开发和学习参考。1. 数据库操作-- 查看所有数据库 SHOW DATABASES;-- 创建数据库 CREATE DATABASE db_name;-- 删除数据库 DROP DATABASE db_name;-- 使用数据库 USE db_name;--…

[iOS] 单例模式的深究

文章目录前言一、什么是单例模式二、单例模式的优缺点优点缺点三、模式介绍1.懒汉模式&#xff08;GCD & 互斥锁&#xff09;GCD 写法互斥锁写法&#xff08;双重检查锁&#xff09;2.饿汉模式总结懒汉式 互斥锁&#xff08;Mutex&#xff09;**懒汉式 GCD (dispatch_onc…

解决Discord.py中的/help命令问题

在使用Discord.py开发机器人时,常常会遇到一些常见的问题,比如命令找不到或者命令功能不符合预期。本文将详细探讨如何解决在使用@bot.slash_command定义/help命令时遇到的问题,并提供一个完整的实例来展示如何正确设置这个命令。 问题描述 当你在Discord机器人中输入/hel…

解决VSCode默认F5配置无法启动调试器的问题

前几天做笔试&#xff0c;最后一题代码有点问题&#xff0c;习惯性地按了个F5启动gdb发现居然爆炸了&#xff0c;报错找不到编译出来的二进制文件&#xff0c;看着像是默认配置的问题&#xff0c;由于时间紧迫最后只能用输出大法解决。 感觉不可理喻&#xff0c;几年前调程序的…

webrtc弱网-LossBasedBweV2类源码分析与算法原理

1. 核心功能LossBasedBweV2是WebRTC Google Congestion Control (GoogCC) 算法套件中的第二代基于丢包的带宽估计器。它的核心功能是&#xff1a;带宽估计&#xff1a; 根据网络数据包的丢失情况&#xff0c;估算当前网络路径可用的带宽上限。其核心假设是&#xff1a;当发送速…

AI代理化检索:智能信息获取新范式

代理化检索(Agentic Retrieval)是一种由AI代理自主管理的信息检索范式,通过动态规划、工具调用和多步推理提升复杂查询的处理能力。其核心机制、技术实现和应用特点如下: 一、核心机制 自主决策循环 代理通过循环执行"规划-行动-观察"流程处理查询: 规划阶段:…

Android Studio中的各种Java版本区别

Android Studio中的各种Java版本 创建一个项目&#xff0c;app模块的build.gradle.kts默认配置如下&#xff1a; plugins {alias(libs.plugins.android.application)alias(libs.plugins.kotlin.android) }android {namespace "cn.android666.javaversiontest"comp…

ubuntu新增磁盘扩展LV卷

登录平台 login as: wqbboy wqbboy172.17.2.86s password: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/proSyst…

Day 16: GAN生成对抗网络专项 - 从博弈论到艺术创作的完整之旅

Day 16: GAN生成对抗网络专项 - 从博弈论到艺术创作的完整之旅 🎯 学习目标: 深度掌握生成对抗网络理论与实践,从博弈论基础到风格迁移应用的完整技术栈 ⏰ 学习时长: 6小时深度学习 (理论3小时 + 实践3小时) 🔧 技术栈: PyTorch + 数学推导 + 经典架构 + 实战应用 💡 核…

《QT 108好类》之16 QComboBox类

《QT 108好类》之16 QComboBox类QT 108好类之16 QComboBox类QComboBox类特性和应用场景QComboBox类继承关系QComboBox类使用1 简单使用2 表单输入3 使用自定义模型和视图4 完全自定义弹出窗口QComboBox类类使用效果QT 108好类之16 QComboBox类 QComboBox是 常用的下拉框&#…

项目模块划分

项目模块划分 服务端模块&#xff1a; 持久化数据管理中心模块 在数据管理模块中管理交换机&#xff0c;队列&#xff0c;队列绑定&#xff0c;消息等部分数据数据。 \1. 交换机管理&#xff1a; a. 管理信息&#xff1a;名称&#xff0c;类型&#xff0c;是否持久化标志&#…

小白也能看懂!OpenCV 从零开始安装配置全教程(包含Windows / Ubuntu / 树莓派)系统详细操作配置教程

小白也能看懂&#xff01;OpenCV 从零开始安装配置全教程&#xff08;包含Windows / Ubuntu / 树莓派&#xff09;系统详细操作配置教程 摘要 本教程是面向“小白也能懂”的OpenCV安装与配置全攻略&#xff0c;涵盖Windows、Ubuntu和树莓派三大平台&#xff0c;真正实现“从零…

【华为云】容器镜像服务 SWR 详解:从上传下载到 ModelArts 应用

前言 华为云容器镜像服务&#xff08;Software Repository for Container&#xff0c;简称 SWR&#xff09;是华为云提供的企业级容器镜像仓库服务。它支持 Docker 镜像的存储、管理和分发&#xff0c;为容器化应用提供安全可靠的镜像托管服务。本文将详细介绍 SWR 的核心功能…

计算机网络知识点梳理(一)概述:组成、发展、性能、体系结构等

目录 一、互联网 &#xff08;1&#xff09;特点 &#xff08;2&#xff09;网络的组成 &#xff08;3&#xff09;网络、互连网、因特网 &#xff08;4&#xff09;互联网发展的三个阶段 &#xff08;5&#xff09;标准化 &#xff08;6&#xff09;组成 二、计算机网…

不同行业视角下的数据分析

声明&#xff1a;以下部分内容含AI生成 基于行业维度来划分数据分析岗位&#xff0c;可以帮助我们更好地理解不同行业对数据分析技能、业务知识和职业发展的独特要求。 目录 一、总体框架&#xff1a;为什么行业维度如此重要&#xff1f; 二、主要行业划分及详细讲解 1. 互联…

「CTF」青少年CTF·雏形系统

题目&#xff1a; 解题过程 尝试随便输入点什么&#xff0c;没有结果 使用dirsearch扫描网址目录 可以看到有扫描到一个www.zip&#xff0c;zip文件大概率有需要的东西 网址后加上www.zip就能对该文件进行下载 文件解压缩后如下 打开qsnctf.php&#xff0c;代码内容如下 <…

Java实战项目演示代码及流的使用

project 准备牌->洗牌->发牌 import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet;public class PokerGameplus {static HashMap<Integer,String> hs new HashMap<>();static ArrayList<Int…

使用 OpenLayers + 高德瓦片源实现旅游足迹地图

作为一个热爱旅行的开发者&#xff0c;我一直想要一个能够记录和展示自己旅游足迹的功能。市面上虽然有很多地图应用&#xff0c;但大多功能复杂&#xff0c;而我只需要一个简单直观的方式来标记去过的地方和想去的地方。 于是我决定在自己的个人网站上实现一个旅游足迹地图功…