全面解析 Java 流程控制语句


Java学习资料

Java学习资料

Java学习资料


在 Java 编程中,流程控制语句是构建程序逻辑的关键部分,它决定了程序的执行顺序和走向。通过合理运用这些语句,开发者能够实现各种复杂的业务逻辑,让程序更加灵活和智能。

顺序结构

顺序结构是程序中最基本的执行结构,它按照代码书写的先后顺序依次执行。例如:

int num1 = 5;
int num2 = 3;
int sum = num1 + num2;
System.out.println("两数之和为:" + sum);

在这段代码中,首先声明并初始化变量num1和num2,然后计算它们的和并赋值给sum,最后输出结果。每一行代码按顺序执行,这就是顺序结构的体现。顺序结构在程序中无处不在,它为其他更复杂的流程控制提供了基础。

选择结构

if - else 语句

if - else 语句用于根据条件判断来决定程序的执行路径。其基本语法为:

if (条件表达式) {// 当条件表达式为true时执行的代码块
} else {// 当条件表达式为false时执行的代码块
}

例如,判断一个数是否为偶数:

int number = 8;
if (number % 2 == 0) {System.out.println(number + " 是偶数");
} else {System.out.println(number + " 是奇数");
}

当条件表达式只有一条语句时,可以省略大括号,但为了代码的可读性,建议保留。

switch - case 语句

switch - case 语句用于多分支选择,根据一个表达式的值来选择执行不同的代码块。语法如下:

switch (表达式) {case1:// 当表达式的值等于值1时执行的代码break;case2:// 当表达式的值等于值2时执行的代码break;// 可以有多个case分支default:// 当表达式的值与所有case值都不匹配时执行的代码break;
}

例如,根据用户输入的数字输出对应的星期几:

int day = 3;
switch (day) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("输入的数字无效");break;
}

在 switch - case 语句中,break语句用于跳出当前的 switch 块,如果没有break,程序会继续执行下一个 case 分支的代码,直到遇到break或 switch 块结束。

循环结构

for 循环

for 循环用于已知循环次数的场景,其语法为:

for (初始化表达式; 条件表达式; 更新表达式) {// 循环体代码
}

例如,计算 1 到 10 的累加和:

int sum = 0;
for (int i = 1; i <= 10; i++) {sum += i;
}
System.out.println("1到10的累加和为:" + sum);

在 for 循环中,初始化表达式在循环开始前执行一次,条件表达式在每次循环开始时进行判断,若为 true 则执行循环体,更新表达式在每次循环结束后执行,然后再次判断条件表达式,直到条件表达式为 false 时循环结束。

while 循环
while 循环用于在条件满足时重复执行一段代码,其语法为:
while (条件表达式) {// 循环体代码
}

例如,输出 1 到 5 的数字:

int num = 1;
while (num <= 5) {System.out.println(num);num++;
}

在 while 循环中,先判断条件表达式,若为 true 则执行循环体,执行完循环体后再次判断条件表达式,直到条件表达式为 false 时循环结束。需要注意的是,在循环体中一定要有改变条件表达式的语句,否则会造成死循环。

do - while 循环

do - while 循环与 while 循环类似,但它会先执行一次循环体,然后再判断条件表达式。语法为:

do {// 循环体代码
} while (条件表达式);

例如,让用户输入一个数字,直到输入的数字大于 10 为止:

import java.util.Scanner;Scanner scanner = new Scanner(System.in);
int input;
do {System.out.println("请输入一个数字:");input = scanner.nextInt();
} while (input <= 10);
System.out.println("你输入的数字大于10");

do - while 循环适用于需要先执行一次操作,再根据结果判断是否继续循环的场景。

跳转语句

break 语句

break 语句用于跳出当前循环或 switch 块。在循环中,当满足某个条件时,可以使用 break 语句提前结束循环。例如:

for (int i = 1; i <= 10; i++) {if (i == 5) {break;}System.out.println(i);
}

上述代码会输出 1 到 4,当i等于 5 时,遇到 break 语句,循环结束。

continue 语句

continue 语句用于跳过当前循环的剩余部分,直接进入下一次循环。例如:

for (int i = 1; i <= 10; i++) {if (i % 2 == 0) {continue;}System.out.println(i);
}

这段代码会输出 1 到 10 中的所有奇数,当i为偶数时,遇到 continue 语句,跳过本次循环的输出语句,直接进入下一次循环。

return 语句

return 语句用于从方法中返回一个值,并结束方法的执行。在有返回值的方法中,必须使用 return 语句返回一个符合方法返回类型的值。例如:

public static int add(int num1, int num2) {return num1 + num2;
}

在上述方法中,计算两个数的和并通过 return 语句返回结果。在无返回值的方法(返回类型为 void)中,也可以使用 return 语句提前结束方法的执行,例如:

public static void printNumber(int num) {if (num < 0) {return;}System.out.println(num);
}

当输入的数字为负数时,遇到 return 语句,方法提前结束,不会输出数字。

Java 的流程控制语句为开发者提供了丰富的工具来控制程序的执行流程,通过灵活运用这些语句,可以实现各种复杂的业务逻辑和功能需求。无论是简单的顺序执行,还是根据条件进行选择和循环,以及通过跳转语句灵活控制程序走向,它们都是编写高效、可靠 Java 程序的基础。

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

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

相关文章

Linux系统常用指令

查找文件 find / -name "<文件名>" 2>/dev/null //遍历系统查找指定文件名文件ls -l | grep "<文件名>" //列出当前目录下有关文件名的文件find -name sw_sfp_alarm_cfg.xml //查找文件名对应路径 切换目录 编辑文件 vi <文件…

【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)

最近做了一个项目&#xff0c;菜单栏读取数据后自动生成&#xff0c;结果用到了双重布局 父物体 尝试了很多方式&#xff0c;也看过很多大佬的文章&#xff0c;后来自己琢磨了一下&#xff0c;当子物体组件自动生成之后&#xff0c;使用以下以下代码效果会好一些&#xff1a; …

AI辅助医学统计分析APP

AI辅助医学统计分析APP 医学统计分析的困难点在于开始阶段分析的规划和得出分析结果之后分析结果的解释&#xff0c;前者之所以困难是因为分析方法繁多又有不同的使用条件&#xff0c;后者则是因为结果中术语较多&#xff0c;且各种分析方法术语又有不同&#xff0c;非统计专业…

[STM32 HAL库]串口中断编程思路

一、前言 最近在准备蓝桥杯比赛&#xff08;嵌入式赛道&#xff09;&#xff0c;研究了以下串口空闲中断DMA接收不定长的数据&#xff0c;感觉这个方法的接收效率很高&#xff0c;十分好用。方法配置都成功了&#xff0c;但是有一个点需要进行考虑&#xff0c;就是一般我们需要…

AutoSar架构学习笔记

1.AUTOSAR&#xff08;Automotive Open System Architecture&#xff0c;汽车开放系统架构&#xff09;是一个针对汽车行业的软件架构标准&#xff0c;旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元&#xff08;ECU&#xf…

算法竞赛之差分进阶——等差数列差分 python

目录 前置知识进入正题实战演练 前置知识 给定区间 [ l, r ]&#xff0c;让我们把数组中的[ l, r ] 区间中的每一个数加上c,即 a[ l ] c , a[ l 1 ] c , a[ l 2] c , a[ r ] c; 怎么做&#xff1f;很简单&#xff0c;差分一下即可 还不会的小伙伴点此进入学习 进入正题 …

TDengine 做 Apache SuperSet 数据源

‌Apache Superset‌ 是一个现代的企业级商业智能&#xff08;BI&#xff09;Web 应用程序&#xff0c;主要用于数据探索和可视化。它由 Apache 软件基金会支持&#xff0c;是一个开源项目&#xff0c;它拥有活跃的社区和丰富的生态系统。Apache Superset 提供了直观的用户界面…

金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践

导读&#xff1a;中信银行信用卡中心每日新增日志数据 140 亿条&#xff08;80TB&#xff09;&#xff0c;全量归档日志量超 40PB&#xff0c;早期基于 Elasticsearch 构建的日志云平台&#xff0c;面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此…

虚幻商城 Fab 免费资产自动化入库

文章目录 一、背景二、实现效果展示三、实现自动化入库一、背景 上一次写了个这篇文章 虚幻商城 Quixel 免费资产一键入库,根据这个构想,便决定将范围扩大,使 Fab 商城的所有的免费资产自动化入库,是所有!所有! 上一篇文章是根据下图这部分资产一键入库: 而这篇文章则…

游戏为什么失败?回顾某平庸游戏

1、上周玩了一个老鼠为主角的游戏&#xff0c;某平台喜1送的&#xff0c; 下载了很久而一直没空玩&#xff0c;大约1G&#xff0c;为了清硬盘空间而玩。 也是为了拔掉心中的一根刺&#xff0c;下载了而老是不玩总感觉不舒服。 2、老鼠造型比较写实&#xff0c;看上去就有些讨…

亲测有效!如何快速实现 PostgreSQL 数据迁移到 时序数据库TDengine

小T导读&#xff1a;本篇文章是“2024&#xff0c;我想和 TDengine 谈谈”征文活动的优秀投稿之一&#xff0c;作者从数据库运维的角度出发&#xff0c;分享了利用 TDengine Cloud 提供的迁移工具&#xff0c;从 PostgreSQL 数据库到 TDengine 进行数据迁移的完整实践过程。文章…

C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程

通过本课程的学习&#xff0c;你可以掌握C#编程的重点&#xff0c;享受编程的乐趣。 在本课程之前&#xff0c;你无需具备任何C#的基础知识&#xff0c;只要能操作电脑即可。 不过&#xff0c;希望你的数学不是体育老师教的。好的程序是数理化的实现与模拟。没有较好的数学基础…

Linux探秘坊-------3.开发工具详解(2)

1.动静态库和动静态链接&#xff08;操作&#xff09; 静态库是指编译链接时,把库⽂件的代码全部加⼊到可执⾏⽂件中,因此⽣成的⽂件 ⽐较⼤,但在运⾏时也就不再需要库⽂件了。其后缀名⼀般为“.a” 动态库与之相反,在编译链接时并 没有把库⽂件的代码加⼊到可执⾏⽂件中 ,⽽…

电脑开机出现Bitlock怎么办

目录 1.前言 2.产生原因&#xff1a; 1.系统异常关机 2.系统更新错误 3.硬件更换 4.CMOS电池问题 5.出厂设置 6.意外情况 3.解锁步骤&#xff1a; 3.1&#xff1a;记住密钥ID&#xff08;前6位&#xff09; 3.2&#xff1a;打开aka.ms/myrecoverykey网址 3.3&#…

Avalonia系列文章之小试牛刀

最近有朋友反馈&#xff0c;能否分享一下Avalonia相关的文章&#xff0c;于是就抽空学习了一下&#xff0c;发现Avalonia真的是一款非常不错的UI框架&#xff0c;值得花时间认真学习一下&#xff0c;于是边学习边记录&#xff0c;整理成文&#xff0c;分享给大家&#xff0c;希…

springboot自动配置原理(高低版本比较)spring.factories文件的作用

SpringBootApplication public class SpringSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringSecurityApplication.class, args);}}注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Doc…

vue2 - Day05 - VueX

Vuex 是 Vue.js 官方的状态管理库。它是一个让你能在应用中集中管理共享状态的工具。当应用的规模逐渐增大&#xff0c;组件之间的数据传递变得越来越复杂时&#xff0c;Vuex 就成为了救星&#xff0c;提供了一个集中式的存储来管理所有的组件状态&#xff0c;并且保证状态以一…

IDEA导入Maven工程不识别pom.xml

0 现象 把阿里 sentinel 项目下载本地后&#xff0c;IDEA 中却没显示 maven 工具栏。 1 右键Maven Projects 点击IDEA右侧边栏的Maven Projects&#xff0c;再点击&#xff1a; 在出现的选择框中选择指定的未被识别的pom.xml即可&#xff1a; 2 Add as maven project 右键p…

VUE学习笔记(入门)5__vue指令v-html

v-html是用来解析字符串标签 示例 <!doctype html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document<…

OSPF的LSA的学习研究

OSPF常见1、2、3、4、5、7类LSA的研究 1、拓扑如图&#xff0c;按照地址表配置&#xff0c;激活OSPF划分相关区域并宣告相关网段 2、1类LSA&#xff0c;每台运行了OSPF的路由器都会产生&#xff0c;描述了路由器的直连接口状况和cost 可以看到R1产生了一条router lsa&#xff0…