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

Java基础教程 - 4 流程控制

更好的阅读体验:点这里 ( www.doubibiji.com
更好的阅读体验:点这里 ( www.doubibiji.com
更好的阅读体验:点这里 ( www.doubibiji.com

4 流程控制

4.1 分支结构

判断在生活中无处不在,例如我们登录某个系统,需要判断密码是否正确,正确才能登录,否则登录失败。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1 if-else 语句

在 Java 中通过 if else 来进行条件的判断,格式如下:

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

也可以不需要 else

if (condition) {// 条件成立,要做的事情
}

if 后面的条件 condition 需要 boolean 类型的值、变量或表达式,也就是 truefalse

举个栗子,判断一个数是否为偶数:

public static void main(String[] args) {int num = 5;if (num % 2 == 0) {System.out.println(num + " 是偶数");} else {System.out.println(num + " 是奇数");}
}

执行结果:

5 是奇数


一般情况下,我们经常通过 关系运算逻辑运算 作为 if 的判断条件。

举个栗子:

public static void main(String[] args) {int a = 5;if (a > 0 && a < 10)System.out.println("a在0~10之间");
}

如果 ifelse 后面只有一条语句,可以省略 {}

2 if-elseif-else 语句

if-else 只能进行是和否的判断。

if-elseif-else 可以进行多条件判断。

语法格式:

if (condition1) {// condition1为true时执行的语句块
} else if (condition2) {// condition2为true时执行的语句块
} else {// 所有条件都为false时执行的语句块
}

else-if 可以有多个,最后的 else 可以省略。

当满足一个条件后,其他的条件就不会再判断了,如果所有条件都不满足,会执行 else


下面通过练习来举个栗子:

给出成绩,经过判断,打印出输入的成绩是优秀、良好、中等、及格还是不及格。

public static void main(String[] args) {int score = 85;if (score < 0 || score > 100) {System.out.println("成绩不正确");} else 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("不及格");}
}

上面的输出结果为:良好


重新修改一下程序,读取键盘的输入作为值,这里用到读取键盘输入,需要用到 Scanner 类,所以需要使用 import 进行导入,import 的知识点,后面再讲解。

import java.util.Scanner;public class HelloJava {public static void main(String[] args) {// 声明一个Scanner,用于读取键盘的输入Scanner scan = new Scanner(System.in);// 读取的输入int score = scan.nextInt();if (score < 0 || score > 100) {System.out.println("成绩不正确");} else 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("不及格");}}
}

nextInt() 表示以整形数据的形式读取键盘输入。当程序执行到 scan.nextInt(); 的时候,程序会阻塞在这里,等待用户的输入,输入完成,才会继续执行。


if-else语句都是可以相互嵌套的,可以在 if-else 判断中再进行 if-else 判断。

举个栗子:

public static void main(String[] args) {int x = 10;int y = 20;if (x > 5) {if (y > 15) {System.out.println("x 大于 5,y 大于 15");} else {System.out.println("x 大于 5,y 小于等于 15");}} else {if (y > 10) {System.out.println("x 小于等于 5,y 大于 10");} else {System.out.println("x 小于等于 5,y 小于等于 10");}}
}

3 三目运算符

假设现在有两个数字,我们希望获得其中较大的一个,那么可以使用 if-else 语句,例如:

public static void main(String[] args) {int a = 4;int b = 5;int max;if (a > b)max = a;elsemax = b;System.out.println("最大值为:" + max);		// 最大值为:5
}

我们可以使用三目运算符来完成上面的功能,代码会更简洁的写法:

public static void main(String[] args) {int a = 4;int b = 5;int max = a > b ? a : b;System.out.println("最大值为:" + max);		// 最大值为:5
}

int max = a > b ? a : b; 的意思是:先判断 a > b,如果成立,就返回 a,不成立就返回 b

代码简洁了确实很多。能用三目运算符的地方都可以使用 if-else 代替。

4 switch语句

switch语句也是一种判断语句,通常用于对多个可能的值进行比较。switch语句的语法如下:

switch (value) {case value1:// value == value1 时执行的代码块break;case value2:// value == value2 时执行的代码块break;default:// value 不等于上面所有的case 时执行的代码块
}

注意:switch(value) 中的value,只能是byte、short、char、int、枚举类型(后面再讲)、String类型这六种数据类型

以下是一个示例代码,通过数字判断季节:

public static void main(String[] args) {int day = 2;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;default:System.out.println("错误的季节");}
}

day 满足哪个 case,就会执行哪个 case 后面的代码。

执行结果:

夏季

注意,每个case后,都需要进行 breakreturn,否则会跳到下一个 case

举个栗子:

public static void main(String[] args) {int day = 2;switch (day) {case 1:System.out.println("春季");break;case 2:System.out.println("夏季");case 3:System.out.println("秋季");case 4:System.out.println("冬季");break;default:System.out.println("错误的季节");}
}

因为 case 2 没有 break,所以执行完成,会跳到 case 3 执行,执行完 case 3 没有 breakreturn,会继续跳到 case 4执行,执行完成,case 4break,则跳出。

执行结果:

夏季

秋季

冬季


如果对多个 case 的处理是一样的,就可以将 break 省略。

例如下面的代码中,day 为1,2,3,打印的都是秋季。

public static void main(String[] args) {int day = 2;switch (day) {case 1:case 2:case 3:System.out.println("秋季");case 4:System.out.println("冬季");break;default:System.out.println("错误的季节");}
}

4.2 循环语句

循环在日常生活中也很常见,例如我们要重复做某件事,就需要用到循环,循环不停的做某件事。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

举个栗子,每天向小红送一条玫瑰花,坚持送100天,这个应该怎么实现呢?

1 for 循环

for循环是一种常用的循环语句,可以指定循环变量的初始值、终止条件和步长。

for循环的语法如下:

// 对应下面的各个部分
for(①初始化部分; ②循环条件部分; ④迭代部分){③循环体部分;// 执行过程是①-②-③-④-②-③-④-②-③-④......②
// 执行①,然后执行②,判断②是否成立,如果成立,执行③,③执行完成,执行④,④执行完成,再次判断②是否成立,成立继续一轮循环,执行③,②不成立,退出循环。

举个栗子:

public static void main(String[] args) {for (int i = 1; i <= 5; i++) {System.out.println(i);}
}

先执行 int i = 1,定义一个变量 i ,然后执行 i <= 5 ,判断 i 是否小于等于5,如果为 true,则执行循环体中的代码 System.out.println(i); ,执行完循环体中的代码,执行 i++ ,然后再次执行 i <= 5 ,判断i 是否小于等于5,直到 i <= 5 不满足,则终止循环。

打印结果:

1

2

3

4

5

再举个例子:

for (int i = 1, j = 10; i <= 5 && j > 0 ; i++, j--) {System.out.println(i + j);
}

从上面可以看出,初始化可以定义多个变量,但是变量的类型要一样。


使用 for 循环也是可以定义死循环的。

什么是死循环,就是一直循环,不会终止的循环。

举个栗子:

下面的循环中,不执行步长的增长,i 始终为1,则 i <= 5 永远成立,所以循环不会终止。

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

还可以这样写:

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

上面的 for 循环会一直执行,不停的打印 i 的值,i 的值会一直增长。

在实际的开发中,for 循环是用的最多的。

2 while 循环

可以使用 while进行循环操作。

while 循环的语法:

while (condition) {// condition为真时执行的代码块
}

代码执行到while,会判断是否满足条件,如果满足,就会进入while循环,执行满足条件要做的事情,执行完成,会重新判断while后面的条件,如果满足会继续循环,如果不满足就不在进入循环。


回到一开始的提问:每天向小红送一条玫瑰花,坚持送100天,这个应该怎么实现呢?

public static void main(String[] args) {int i = 1;while (i <= 100) {System.out.println("第" + i +"天,送你一朵玫瑰花");i += 1;}
}

首先我们定义了一个变量 i ,用来记录当前是第几天。

我们一开始定义了 i 为 1,执行到 while 循环时,先判断 i 是否小于等于100,如果小于等于100,则进入到循环,打印语句,然后执行 i += 1;i 加1,然后再执行while后面的条件判断,判断 i <= 100,这样一直循环执行,当 i = 101时,刚好已经执行了100次,且不再满足 i < =100,此时终止循环。

注意,一定要对 i 进行累加,如果 i 不进行累加,永远会满足 i <= 100,那么循环将永远不会结束,变成死循环。

执行结果:

第1天,送你一朵玫瑰花

第2天,送你一朵玫瑰花

……

第99天,送你一朵玫瑰花

第100天,送你一朵玫瑰花


我们在计数的时候,i 也可以从0开始,例如:

public static void main(String[] args) {int i = 0;while (i < 100) {System.out.println("第" + (i + 1) + "天,送你一朵玫瑰花");i += 1;}
}

判断的条件的设定是很灵活的,根据实际需求来就可以了,不是一成不变的。


练习:计算从1累加到100的和

public static void main(String[] args) {int sum = 0; 										// 定义一个变量,存储累加的和int i = 1; 											// 定义一个变量,标识累加到几了,从1开始累加while (i <= 100) {sum += i; 										// 将和累加i += 1; 											// 将i加1,继续累加}System.out.println("1~100的和为:" + sum); 		// 打印最终的结果
}

执行结果:

1~100的和为:5050

使用 while 循环的地方都可以使用 for 循环代替。

3 do-while 循环

do...while 循环与 while 循环的区别在于,do...while 循环先执行一次循环体中的代码,再检查条件是否为真。如果条件为真,则继续执行循环体中的代码。

do...while 循环的语法如下:

do {// 循环体中的代码块
} while (condition);

举个栗子,再送一遍花:

public static void main(String[] args) {int i = 1;do {System.out.println("第" + i + "天,送你一朵玫瑰花");i += 1;} while (i <= 100);}

4 循环嵌套

循环是可以相互嵌套的,whilefor 循环中可以再次嵌套 whilefor 循环。

例如每天给小红送10多玫瑰花,坚持100天。

public static void main(String[] args) {int day = 1; // 记录第几天while (day <= 100) {			// 外层循环用于循环天数for (int roseCount = 1; roseCount <= 10; roseCount++) {			// 内层循环用于循环花的朵数System.out.println("第" + day + "天,第" + roseCount + "朵玫瑰花");}day += 1; // 天数+1}}

forwhiledo-while 循环都可以进行多层嵌套。

一般我们使用 for 循环是最多的,要简洁一些:

public static void main(String[] args) {for (int day = 1; day < 100; day++) {			// 外层循环用于循环天数for (int roseCount = 1; roseCount <= 10; roseCount++) {			// 内层循环用于循环花的朵数System.out.println("第" + day + "天,第" + roseCount + "朵玫瑰花");}}}

5 中断循环

我们在前面终止循环,主要是靠不满足条件时自动跳出。这样的话,必须每一次的循环都执行完成,到达条件判断的时候才能跳出。

但是有时候,我们不得不提前退出循环,或者终止当前的循环继续后面的循环,这个时候就需要 breakcontinue 关键字了。


break 语句

break 关键字用于直接结束当前所在的循环。


举个栗子:

如果一个循环,想在执行第三次的时候跳出:

public static void main(String[] args) {int i = 0;while (i < 10) {if (i == 3) {break;}System.out.println("i=" + i);i++;}
}

执行结果:

i=0
i=1
i=2

可以看到 i = 3 时,跳出了循环。

break只会跳出其所在的循环

public static void main(String[] args) {for (int i = 0; i < 10; i++) {for (int j = 0; i < 10; j++) {if (j == 3) {break;}System.out.println("i=" + i + ", j=" + j);}}
}

上面的代码,break只能跳出内部的那一个循环。无法跳出外部的循环。

如果就是想跳出外部的循环呢?

那就需要给外部的循环添加一个标签,举个栗子:

public static void main(String[] args) {outer : for (int i = 0; i < 10; i++) {for (int j = 0; i < 10; j++) {if (j == 3) {break outer;}System.out.println("i=" + i + ", j=" + j);}}
}

上面的代码中,给外层循环添加了一个 outer 标签,标签名称是自定义的;在循环内,可以通过 break 标签 来跳出指定的循环。

可以为每个循环添加标签,如果有多层循环,可以通过这样的方式跳出想要跳出的循环。while 循环也可以添加标签。


continue 语句

continue的作用是中断本次循环,直接进入下一次循环。


举个栗子:

循环5次,在第三次的时候跳过,继续后面的执行:

public static void main(String[] args) {for (int i = 0; i < 5; i++) {if (i == 3) {continue;}System.out.println("i=" + i);}
}

在上面 i == 3 的时候,终止了本次循环,直接跳到 i++ ,继续后面的执行。

执行结果:

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

同样,continue 和 break 一样,也可以选择终止的是哪一层的循环。

举个栗子:

public static void main(String[] args) {outer : for (int i = 0; i < 10; i++) {for (int j = 0; i < 10; j++) {if (j == 3) {continue outer;}System.out.println("i=" + i + ", j=" + j);}}
}

在上面的代码中,给外层循环定义了一个标签,每次执行到 j == 3 ,就会终止本次循环,直接跳转到外层循环的 i++,继续后面的循环。

4.3 练习

随机生成一个1-100的整数,然后在键盘输入数字来猜,猜不对,提示大了还是小了,猜对了,跳出循环。

在这里我们需要生成一个随机数,需要导入一个包 java.util.Random,用来生成 1~100 的随机数;

需要键盘输入,需要导入java.util.Scanner 包。

// 导入包
import java.util.Random;
import java.util.Scanner;public class HelloJava {public static void main(String[] args) {Random random = new Random();// 随机生成1-100的目标数// random.nextInt(100)表示生成0-100的随机数,包括0,不包括100// 在[0,100)的基础上+1就是[1,101),1~100var goal = random.nextInt(100) + 1;while (true) {System.out.println("请猜随机数的大小:");	// 打印信息,提示用户输入Scanner scan = new Scanner(System.in);int value = scan.nextInt();		// 获取键盘输入的数值if (value < 1 || value > 100) {System.out.println("请输入1-100之间的整数!");continue;}if (value == goal) {System.out.println("猜对了!");break;		// 如果猜对了,就跳出循环} else if (value < goal) {System.out.println("猜小了!");} else {System.out.println("猜大了!");}}}
}

相关文章:

Java基础教程 - 4 流程控制

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 4 流程控制 4.1 分支结构…...

大厂Java面试题:MyBatis中有几种加载映射器(Mapper.xml)的方式?

大家好&#xff0c;我是王有志。 今天给大家带来的是一道来自京东的 MyBatis 面试题&#xff1a;MyBatis 中有几种加载映射器&#xff08;Mapper.xml&#xff09;的方式&#xff1f; 常见加载 MyBatis 映射器的方式有 5 种&#xff0c;可以根据不同的使用方式来进行具体区分&…...

Flutter笔记:Widgets Easier组件库(10)快速处理承若型对话

Flutter笔记 使用Widgets Easier组件库快速处理承若型对话 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://…...

10_Linux中的计划任务

10_Linux中的计划任务 常见计划任务 Linux系统中默认在执行的计划任务 日志文件的轮询:logrotate日志文件分析logwatch任务建立locate数据库建立manpage查询数据库RPM软件日志文件删除缓存与网络有关的分析 仅执行一次的计划任务 atd和at [rootnode4 ~]# systemctl start…...

Google Play开发者账号为什么会被封?如何解决关联账号问题?

Google Play是Google提供的一个应用商店&#xff0c;用户可以在其中下载并安装Android设备上的应用程序、电影、音乐、电子图书等。Google Play是Android平台上较大的应用市场&#xff0c;包含了数百万个应用程序和游戏。但是谷歌对于上架应用的审核越趋严格&#xff0c;开发者…...

(第12天)【leetcode题解】151、反转字符串中的单词

目录 151、反转字符串中的单词题目描述思路代码本题反思 151、反转字符串中的单词 题目描述 给你一个字符串 s &#xff0c;请你反转字符串中单词的顺序。 单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个…...

如何处理多模态数据噪声不均衡动态?天大等最新《低质量数据的多模态融合》综述

多模态融合致力于整合来自多种模态的信息&#xff0c;目的是实现更准确的预测。在包括自动驾驶和医疗诊断等广泛的场景中&#xff0c;多模态融合已取得显著进展。然而&#xff0c;在低质量数据环境下&#xff0c;多模态融合的可靠性大部分仍未被探索。本文综述了开放多模态融合…...

Autosar NvM配置-手动配置Nvblock及使用-基于ETAS软件

文章目录 前言NvDataInterfaceNvBlockNvM配置SWC配置RTE Mapping使用生成的接口操作NVM总结前言 NVM作为存储协议栈中最顶层的模块,是必须要掌握的。目前项目基本使用MCU带的Dflash模块,使用Fee模拟eeprom。在项目前期阶段,应该充分讨论需要存储的内容,包括应用数据,诊断…...

【c++算法篇】双指针(下)

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;算法笔记仓 朋友们大家好啊&#xff0c;本篇文章我们来到算法的双指针的第二部分 目录 1.有效三角形的个数2.查找总价格为目标值的两个商品3.三数之和4.四数之和5.双指针常见场景总结 1.有效三角形…...

微图乐 多种装B截图一键制作工具(仅供娱乐交流)

软件介绍 采用exe进程交互通信。全新UI界面&#xff0c;让界面更加清爽简约。支持zfb、VX、TX、Yin行、Dai款、游戏等图片生成&#xff0c;一键超清原图复制到剪辑板&#xff0c;分享给好友。适用于提高商家信誉度&#xff0c;产品销售额度。装逼娱乐&#xff0c;用微图乐。图…...

基于Springboot的点餐平台

基于SpringbootVue的点餐平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页展示 菜品信息 菜品资讯 购物车 后台登录 用户管理 菜品分类管理 菜品信息管理 …...

C# 获取一个字符串中非数字部分?

方法一&#xff1a;使用正则表达式 使用正则表达式可以便捷地匹配并提取出字符串中所有非数字字符。与之前保留数字时的做法相反&#xff0c;这次我们将匹配数字并替换为空字符串&#xff0c;从而留下非数字部分。 using System; using System.Text.RegularExpressions;publi…...

今日总结2024/5/7

今日复习LIS二分优化的使用 P2782 友好城市 确定一边城市排序完后&#xff0c;另外一边满足坐标上升的最大数目即是桥的最大个数 为上升子序列模型 #include <iostream> #include <algorithm> #include <utility> #define x first #define y second cons…...

爬虫学习(3)豆瓣电影

代码 import requests import jsonif __name__ "__main__":url https://movie.douban.com/j/chart/top_list#post请求参数处理&#xff08;同get请求一致&#xff09;headers {"User-Agent": Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/53…...

GNU Radio创建FFT、IFFT C++ OOT块

文章目录 前言一、GNU Radio官方FFT弊端二、创建自定义的 C OOT 块1、创建 OOT 模块2、创建 OOT 块3、修改 C 和 CMAKE 文件4、编译及安装 OOT 块 三、测试1、grc 图2、运行结果①、时域波形对比②、频谱图对比 四、资源自取 前言 GNU Radio 自带的 FFT 模块使用起来不是很方便…...

125.两两交换链表中的节点(力扣)

题目描述 代码解决及思路 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), …...

APP精准推送广告是怎么做到的?

你有没有遇到这种情况&#xff0c;刚和家人聊起五一去哪玩&#xff0c;各种软件就刷到各地旅游景点。刚和朋友说到健身计划&#xff0c;转眼间网购平台就给你推荐各种健身用品&#xff0c;这些软件是如何知道我们的需求&#xff0c;难道我们的手机被监听了&#xff1f;从技术上…...

RapidJSON介绍

1.简介 RapidJSON 是一个 C 的 JSON 解析库&#xff0c;由腾讯开源。 支持 SAX 和 DOM 风格的 API&#xff0c;并且可以解析、生成和查询 JSON 数据。RapidJSON 快。它的性能可与strlen() 相比。可支持 SSE2/SSE4.2 加速。RapidJSON 独立。它不依赖于 BOOST 等外部库。它甚至…...

大型企业总分支多区域数据传输,效率为先还是安全为先?

大型企业为了业务拓展需要&#xff0c;会在全国乃至全球各地设立分公司和办事机构&#xff0c;以便更好地处理当地事务&#xff0c;并进行市场的开拓和客户维护&#xff0c;此时&#xff0c;企业内部就衍生出了新的业务需求&#xff0c;即多区域数据传输。 多区域很难准确定义&…...

C语言例题35、反向输出字符串(指针方式),例如:输入abcde,输出edcba

#include <stdio.h>void reverse(char *p) {int len 0;while (*p ! \0) { //取得字符串长度p;len;}while (len > 0) { //反向打印到终端printf("%c", *--p);len--;} }int main() {char s[255];printf("请输入一个字符串&#xff1a;");gets(s)…...

场景文本检测识别学习 day09(Swin Transformer论文精读)

Patch & Window 在Swin Transformer中&#xff0c;不同层级的窗口内部的补丁数量是固定的&#xff0c;补丁内部的像素数量也是固定的&#xff0c;如上图的红色框就是不同的窗口&#xff08;Window&#xff09;&#xff0c;窗口内部的灰色框就是补丁&#xff08;Patch&#…...

抖音小店个人店和个体店有什么不同?区别问题,新手必须了解!

哈喽~我是电商月月 新手开抖音小店入驻时会发现&#xff0c;选择入驻形式时有三个选择&#xff0c;个人店&#xff0c;个体店和企业店 其中&#xff0c;个人店和个体店只差了一个字&#xff0c;但个人店不需要营业执照&#xff0c;是不是入驻时选择个人店会更好一点呢&#x…...

动态规划入门和应用示例

文章目录 前言斐波那契数列爬楼梯总结优点&#xff1a;缺点&#xff1a; 前言 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的数学方法。它主要用于解决一类具有重叠子问题和最优子结构性质的问题。…...

【C语言】精品练习题

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目八&#xff1a; 题目九&#xff1a; 题目十&#xff1a; 题目十一&#xff1a; 题目十二&#xff1a; 题目十…...

数据库(MySQL)—— DML语句

数据库&#xff08;MySQL&#xff09;—— DML语句 什么是DML语句添加数据给全部字段添加数据批量添加数据 修改数据删除数据 什么是DML语句 在MySQL中&#xff0c;DML&#xff08;Data Manipulation Language&#xff0c;数据操纵语言&#xff09;语句主要用于对数据库中的数…...

【最大公约数 并集查找 调和级数】1998. 数组的最大公因数排序

本文涉及知识点 最大公约数 并集查找 调和级数 LeetCode1998. 数组的最大公因数排序 给你一个整数数组 nums &#xff0c;你可以在 nums 上执行下述操作 任意次 &#xff1a; 如果 gcd(nums[i], nums[j]) > 1 &#xff0c;交换 nums[i] 和 nums[j] 的位置。其中 gcd(nums…...

iOS实现一个高性能的跑马灯

效果图 该跑马灯完全通过CATextLayer 实现&#xff0c;轻量级&#xff0c;并且通过 系统的位移动画实现滚动效果&#xff0c;避免了使用displaylink造成的性能瓶颈&#xff0c;使用系统动画&#xff0c;系统自动做了很多性能优化&#xff0c;实现更好的性能&#xff0c;并使用…...

MySQL的视图、存储过程、触发器

视图 介绍 视图是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;不保存查询结果。所以我们在创建视图的时…...

【图像特征点匹配】

图像特征点匹配 图像特征点匹配是计算机视觉中的一项关键技术,它涉及在两个或多个图像之间寻找并匹配具有独特属性的点,这些点被称为特征点。 立体视觉:通过匹配同一场景的不同视角图像中的特征点,可以重建场景的三维结构。物体识别:通过匹配物体表面的特征点,可以识别和…...

GZIPOutputStream JSON压缩

一、背景 小王瞥了一眼历史记录表&#xff0c;不禁惊呼&#xff1a;“这表怎么这么大&#xff1f;”同事们闻声纷纷围拢过来查看。仔细一瞧&#xff0c;发现这个表的大小竟然超过了3G。主管随即指示小王打开相应的表数据检查&#xff0c;发现其中存储了用户的权限信息&#xf…...

毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)

毫米波雷达原理 1. 传统毫米波雷达1.1 雷达工作原理1.2 单目标距离估计1.3 单目标速度估计1.4 单目标角度估计1.5 多目标距离估计1.6 多目标速度估计1.7多目标角度估计1.7 总结 3. FMCW雷达数据处理算法4. 毫米波雷达的目标解析(含python代码)5. ARS548 4D毫米波雷达数据demo(含…...

3.1 Gateway之路由请求和转发

1.依赖坐标 <!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务注册和发现--><dependency><groupId>com.alibab…...

人脸识别开源算法库和开源数据库

目录 1. 人脸识别开源算法库 1.1 OpenCV人脸识别模块 1.2 Dlib人脸识别模块 1.3 SeetaFace6 1.4 DeepFace 1.5 InsightFace 2. 人脸识别开源数据库 2.1 CelebA 2.2 LFW 2.3 MegaFace 2.4 Glint360K 2.5 WebFace260M 人脸识别 (Face Recognition) 是一种基于人的面部…...

Excel 中用于在一个范围中查找特定的值,并返回同一行中指定列的值 顺序不一样 可以处理吗

一、需求 Excel 中&#xff0c;在一列&#xff08;某范围内&#xff09;查找另一列特定的值&#xff0c;并返回同一行中另一指定列的值&#xff0c; 查找列和返回列的顺序不一样 二、 实现 1、下面是一个使用 INDEX 和 MATCH 函数的例子&#xff1a; 假设你有以下数据&…...

MySql-日期分组

一、分别统计各时间各类型数据条数 数据库的 request_time字段 数据类型&#xff1a;timestamp 默认值&#xff1a;CURRENT_TIMESTAMP 例子&#xff1a; 2024-01-26 08:25:48 原数据&#xff1a; 1、将数据按照日期&#xff08;年月日&#xff09;形式输出 按照request_…...

有哪些方法可以在运行时动态生成一个Java类?

使用 Java 反射 API&#x1f6a9;&#xff1a; Java 的反射 API 允许在运行时查询和操作类和对象。虽然反射 API 本身不直接提供生成新类的功能&#xff0c;但可以用于动态调用构造函数、方法和访问字段&#xff0c;这在某些情况下可以作为动态生成类的一部分。 字节码操作库&…...

JAVA两个线程交替打印实现

方案1 Semaphore 机制 通过信息号机制来 协调两个线程&#xff0c;一个线程打印后&#xff0c;给另一个线程释放一个信号量 Semaphore semaphorea new Semaphore(1);Semaphore semaphoreb new Semaphore(0);Thread threada new Thread(new Runnable() {Overridepublic void…...

【C语言】学习C语言

C语言简介 C语言是一门十分流行的编程语言&#xff0c;由美国贝尔实验室的 Dennis Ritchie 在 20 世纪 70 年代开发。 C语言具有高效、可移植、灵活、简单等特点&#xff0c;被广泛应用于操作系统、编译器、数据库、图形界面、嵌入式系统、网络通信、游戏等领域。 本文将带你…...

C 深入指针(2)

目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#…...

FileLink跨网文件交换,推动企业高效协作|半导体行业解决方案

随着信息技术的迅猛发展&#xff0c;全球信息产业已经迎来了前所未有的繁荣与变革。在这场科技革命中&#xff0c;半导体作为信息产业的基础与核心&#xff0c;其重要性日益凸显&#xff0c;半导体的应用场景和市场需求将进一步扩大。 然而&#xff0c;在这一繁荣的背后&#x…...

代码随想录day56 | 动态规划P16 | ● 583. ● 72. ● 编辑距离总结篇

583. 两个字符串的删除操作 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 &quo…...

ASP.NET网络在线考试系统

摘 要 随着计算机技术的发展和互联网时代的到来&#xff0c;人们已经进入了信息时代&#xff0c;也有人称为数字化时代。数在数字化的网络环境下&#xff0c;学生希望得到个性化的满足&#xff0c;根据自己的情况进行学习&#xff0c;同时也希望能够得到科学的评价&#xff0c…...

天锐绿盾 | 办公加密系统,源代码防泄密、源代码透明加密、防止开发部门人员泄露源码

天锐绿盾作为一款专注于数据安全与防泄密的专业解决方案&#xff0c;它确实提供了针对源代码防泄密的功能&#xff0c;帮助企业保护其核心的知识产权。 PC地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是天锐绿盾可能采…...

Day1| Java基础 | 1 面向对象特性

Day1 | Java基础 | 1 面向对象特性 基础补充版Java中的开闭原则面向对象继承实现继承this和super关键字修饰符Object类和转型子父类初始化顺序 多态一个简单应用在构造方法中调用多态方法多态与向下转型 问题回答版面向对象面向对象的三大特性是什么&#xff1f;多态特性你是怎…...

Spring 事务失效的几种情况

目录 1. 事务方法不是public 2. 自调用问题 3. 异常处理不当 4. 数据源或事务管理器配置错误 5. 事务传播行为不当 6. 代理方式不正确 7. 事务同步问题 1. 事务方法不是public 在Spring中&#xff0c;默认情况下&#xff0c;只有public方法上的Transactional注解才会被代…...

【Linux 命令操作】如何在 Linux 中使用多行注释呢?

文章目录 1. 给代码进行多行注释2. 给代码取消多行注释 1. 给代码进行多行注释 &#x1f427;① 首先用 vim 打开代码&#xff0c;按 Esc进入命令模式(Normal mode)&#xff1b; &#x1f427;② 然后按住 ctrl v 进入列模式&#xff1b; &#x1f427;③ 再通过按 h(左)、j(…...

【RPC】Dubbo接口测试

关于rpc&#xff0c;推荐看看这篇 &#xff1a; 既然有HTTP协议&#xff0c;为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架&#xff1a; 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…...

PVZ2 植物克僵尸【第二期】

众所周知&#xff0c;PVZ2&#xff08;植物大战僵尸2&#xff09;中有许多恶心的僵尸&#xff0c;而我们不得不派出它们的————克星&#xff01;&#xff08;*为建议方法&#xff09; 5.战机小鬼 战机小鬼&#xff0c;恶心会发射子弹&#xff0c;所以&#xff1a; 1&…...

libcity笔记:libcity/data/batch.py

1 Batch 2 BatchPAD...

【Java EE】多线程(二)Thread 类与常用方法

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…...