当前位置: 首页 > news >正文

Java 流程控制

条件/选择结构

if

if(条件表达式){// 表达式为 true 时,执行该代码块
}
if(true) {System.out.println("hello");
}

if else

if(条件表达式){// 表达式为 true 时,执行该代码块
} else {// 表达式为 false 时,执行该代码块
}
if(1 == 2) {System.out.println("hello");
} else {System.out.println("hello,world");
}

if else if else

注意判断的顺序,后面的判断只有在前面的条件为 false 时才执行。

if(条件表达式1){// 表达式1为 true 时,执行该代码块
} else if(条件表达式2)  {// 表达式2为 true 时,执行该代码块
} else {// 上述表达式都为 false 时,执行该代码块
}
int score = 70;if(score >= 90) {System.out.println("优秀");
} else if(score >= 80) {System.out.println("良好");
} else if(score >= 70) {System.out.println("一般");
} else if(score >= 60) {System.out.println("及格");
} else {System.out.println("不及格");
}

switch(express) case

根据表达式的值匹配 case,匹配后执行后面的代码,遇到 break 结束,没有匹配的值则执行 default 后的语句。

case 值的类型可以是:byteshortintchar(判断时转为整数)、枚举(Enum,有对应的整数)、String( 1.7 后。通过 hashcode 转换为整数比较,如果相同,再根据内容判断)。

case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

case 中的语句碰到 break 或者执行完后续所有语句才会停止,case 语句后面通常会加 break,也可利用这种特性( case 穿透)。

switch(条件) {case 情况1:语句1;break;// ...default:// 默认语句;
}
int month = 6;
switch(month) {case 3:case 4:case 5:// case 穿透System.out.println("春天");break;case 6:case 7:case 8:System.out.println("夏天");break;case 9:case 10:case 11:System.out.println("秋天");break;default:System.out.println("冬天");
}

循环结构

while

while(条件表达式){// 表达式为 true 时,执行该循环体代码块
}
int i = 7;
while(i > 5){System.out.println(i);i--;
}

do while

do {// 先不判断执行一次该循环体代码块,后面表达式为 true 时,执行该循环体代码块
} while(条件表达式)
int i = 5;
do {System.out.println(i);i--;
} while(i > 5);

for

for(初始化语句;判断循环条件;改变循环条件){// 循环条件判断为 true 时,执行该循环体代码块
}
for(int i = 0;i < 7;i++){System.out.println(i);
}

foreach

JDK1.5 引进了一种新的循环方式,称为 foreach 循环或者加强型循环。

foreach 不是一个关键字,它使用下面的形式来遍历数组或集合。

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

循环控制

  • continue :跳过本次循环
for(int i = 0;i < 7;i++){if(i==3) continue;System.out.println(i);
}
  • break :结束循环
for(int i = 0; i < 7; i++){if(i == 3) break;System.out.println(i);
}

注意:break 后,i++ 不会再执行。

  • return:结束方法执行

lable 标记

Java 语言允许语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,格式如下:

label:
语句;

标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。

标签通常与 break 语句和 continue 语句配合使用,用于跳出特定的循环。

outer:
for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){if (i == 1 && j == 1) {break outer;}System.out.println("i=" + i + ", j=" + j);}
}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

上面代码为一个双重循环区块,break 命令后面加上了 outer 标签。

满足条件时,直接跳出双层循环。如果 break 语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。

continue 语句也可以与标签配合使用,满足条件时,会跳过当前循环,直接进入下一轮外层循环。如果 continue 语句后面不使用标签,则只能进入下一轮的内层循环。

⭐跳转指令

程序运行时,实际是一条条的指令,CPU 有一个 指令指示器,指向下一条要执行的指令,CPU 根据指示器的指示加载指令并且执行。

大部分指令是具体的操作和运算,在执行这些操作时,执行完一个操作后,指令指示器会自动指向下一条指令。

但有一些特殊的指令,称为 跳转指令,这些指令会修改指令指示器的值,让 CPU 跳到一个指定的地方执行。

跳转有两种:一种是条件跳转,条件跳转检查某个条件,满足则进行跳转;另一种是无条件跳转,无条件跳转是直接进行跳转。

选择结构和循环结构最终会转为这些跳转指令,比如:

int a = 10;
if( a % 2 == 0 ){System.out.println("偶数");
}
System.out.println("其它代码");

转换后的指令可能是:

int a = 10;
条件跳转:如果 a % 2 == 0,跳转到第 4 行
无条件跳转:跳转到第 5 行
System.out.println("偶数");
System.out.println("其它代码");

switch 的转换和具体系统实现有关。如果分支较少,可能会转为跳转指令;如果分支较多,条件跳转会进行多次的比较运算,效率比较低,可能会使用一种更高效的方式,叫跳转表

跳转表是一个映射表,存储了可能的值(统一转为整数)以及要跳转的地址,跳转表值的存储空间一般为 32 位,容纳不下 long。

条件值跳转地址
条件1代码块1的地址
条件2代码块2的地址

switch 表达式实质是整型值得比较,跳转表可以进行二分查找,为此,跳转表会进行排序,如果值比较连续的,还会进一步优化为数组,可以根据索引直接进行跳转。

相关文章:

Java 流程控制

条件/选择结构 if if(条件表达式){// 表达式为 true 时&#xff0c;执行该代码块 }if(true) {System.out.println("hello"); }if else if(条件表达式){// 表达式为 true 时&#xff0c;执行该代码块 } else {// 表达式为 false 时&#xff0c;执行该代码块 }if(1 …...

边界无限入选首届“网络安全高成长性企业”并荣获“勇创之星”

近日&#xff0c;由工业和信息化部、四川省人民政府主办的“2023年中国网络和数据安全产业高峰论坛网络安全产融合作分论坛”在成都举行&#xff0c;论坛上公布了“2022年度网络安全高成长性企业”名单。云原生安全、应用安全“灵动智御”理念创领者北京边界无限科技有限公司&a…...

SpringBoot项目的快速创建方式(包含第一个程序的运行)

目录 一、IDEA所用的版本以及插件 二、操作步骤 一、IDEA所用的版本以及插件 idea的版本&#xff1a; idea2022版本下载安装配置与卸载详细步骤&#xff08;包含运行第一个java程序教程&#xff09;_idea2022下载_云边的快乐猫的博客-CSDN博客 如果英文看不懂就点击&#x1…...

linux下设置定期执行需要root权限的sh文件

1、准备好一个shell文件 比如我这个叫clean.sh&#xff0c;位于/home/admin/gdhysthj/clean.sh 2、首先将shell文件赋权为可执行文件 chmod 777 clean.sh 3、切换为超级管理员 su 4、设置定时器 crontab -u root -e 5、回车后&#xff0c;进入一个类似vim的界面&#xff0c…...

认识异或运算

1.什么是异或运算 异或运算是位运算的一种&#xff0c;符号为&#xff1a;^ 运算规则为&#xff1a;相同为0&#xff0c;不同为1 例如 性质&#xff1a; N ^ 0 N N ^ N 0 A ^ B B ^ A (A ^ B) ^ C A ^ (B ^ C)N ^ 0 N public class XorOperation {public static void …...

内容提供者的简单使用

内容提供者的简单使用 最近在复习ContentProvider时遇到了一些问题&#xff0c;几经波折&#xff0c;终于解决了&#xff0c;故写下这篇博客&#xff0c;希望能帮到有相同问题的兄弟。 何时使用 当我们想要一个应用的数据向外部公开时&#xff0c;ContentProvider是一个不错…...

Modelsim 操作结构和流程

用到的命令一般都写到.do文件中&#xff0c;使用脚本语言进行批量处理。Step 1: Map librariesStep 2: Compile the designStep 3: Optimize the design (OPTIONAL)Step 4: Load the design into the simulatorStep 5: Run the simulationStep 6: Debug the design Note: Desig…...

vue和react有什么不同

vue上手难度低&#xff0c;不过react社区活跃度更多一些&#xff0c;一般数据比较多的大型项目会倾向于使用react。在react官网中&#xff0c;官方也建议我们使用React来构建快速响应的大型 Web 应用程序。vue2.0是面向对象编程&#xff08;{data: {}, methods: {}, created() …...

js求解《初级算法》28. 找出字符串中第一个匹配项的下标

一、题目描述 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 输入&#xff1a;haystack "sadb…...

VAE--part1

Variational Auto-Encoder, VAE__part1分布变换VAE慢谈VAE 初现分布标准化重参数技巧VAE的本质是什么&#xff1f;VAE的本质结构正态分布&#xff1f;变分在哪里参考博客仅做学习记录&#xff0c;侵删分布变换 VAE和GAN都是生成式模型&#xff0c;它们俩的目标基本一致&#x…...

备战四级!!!

目录 一、替换词 二、作文常见句型 &#xff08;1&#xff09;常见开头 &#xff08;2&#xff09;阐述观点 &#xff08;3&#xff09;结束语 &#xff08;4&#xff09;提出建议 &#xff08;5&#xff09;表示论证 &#xff08;6&#xff09;给出原因 &#xff08;…...

sizeof与strlen练习

前言 本篇仅仅是为了更加了解sizeof操作符和strlen函数练习. 对于多条sizeof操作符和strlen函数出现,可能很容易造成头脑不清晰,做题时容易混乱. 目录前言一维数组字符数组情况1:情况2情况3二维数组练习之前请牢记下面这段话.这将是头脑清晰地关键. 提示: sizeof(数组名)&#…...

知识图谱的介绍

知识图谱的由来 谷歌在2012年提出了知识图谱的概念&#xff0c;当时目的在于优化搜索引擎的返回结构&#xff0c;为用户提供更精确的结果。 知识图谱的定义 为了理解知识图谱&#xff0c;我们首先要明白信息与知识的概念。首先&#xff0c;信息表示的是外部的客观事实&#…...

【Redis】Redis高级客户端Lettuce详解

文章目录前提Lettuce简介连接Redis定制的连接URI语法基本使用API同步API异步API反应式API发布和订阅事务和批量命令执行Lua脚本执行高可用和分片普通主从模式哨兵模式集群模式动态命令和自定义命令高阶特性配置客户端资源使用连接池几个常见的渐进式删除例子在SpringBoot中使用…...

Qt——自定义界面之QStyle

1. Qt控件结构简介 首先我们要来讲讲GUI控件结构&#xff0c;这里以QComboBox为例&#xff1a; 一个完整的控件由一种或多种GUI元素构成&#xff1a; Complex Control Element。Primitive Element。Control Element。 1.1 Complex Control Element Complex control elements …...

指针和数组面试题(逐题分析,完善你可能遗漏的知识)

人生不是一种享乐&#xff0c;而是一桩十分沉重的工作。 —— 列夫托尔斯泰 前言&#xff1a;之前我们就学习了数组和指针的知识。 数组&#xff1a;数组就是能够存放一组相同类型的元素&#xff0c;数组的大小取决于数组的元素个数和元素类型。 指针&#xff1a;…...

centos7搭建nfs挂载日志目录完整步骤

NFS服务器配置 1.安装NFS服务 首先使用yum安装nfs服务&#xff1a; yum -y install rpcbind nfs-utils 2.创建共享目录 在服务器上创建共享目录&#xff0c;并设置权限。 mkdir /data/share/ chmod 755 -R /data/share/ 3.配置NFS nfs的配置文件是 /etc/exports &…...

三、JavaScript

目录 一、JavaScript和html代码的结合方式 二、javascript和java的区别 1、变量 2、运算 3、数组&#xff08;重点&#xff09; 4、函数 5、重载 6、隐形参数arguments 7、js中的自定义对象 三、js中的事件 四、DOM模型 五、正则表达式 一、JavaScript和html代码的结合方…...

深圳大学计软《面向对象的程序设计》实验11 多继承

A. 在职研究生&#xff08;多重继承&#xff09; 题目描述 1、建立如下的类继承结构&#xff1a; 1)定义一个人员类CPeople&#xff0c;其属性&#xff08;保护类型&#xff09;有&#xff1a;姓名、性别、年龄&#xff1b; 2)从CPeople类派生出学生类CStudent&#xff0c;…...

并发变成实战-原子变量与非阻塞同步机制

文章目录1.锁的劣势2.硬件对并发的支持2.1 比较并交换2.2 非阻塞的计数器3.原子变量类3.1 原子变量是一种“更好的volatile”3.2 性能比较&#xff1a;锁与原子变量4.非阻塞算法4.1 非阻塞的栈4.2 非阻塞的链表4.3 ABA问题非阻塞算法设计和实现上要复杂的多&#xff0c;但在可伸…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...