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

【JAVA】包装类、正则表达式、Arrays类、Lambda表达式

1 包装类

包装类是8种基本数据类型对应的引用类型

作用:后期的集合和泛型不支持基本类型,只能使用包装类

基本数据类型和其对应的引用数据类型的变量可以互相赋值

基本数据类型引用数据类型

byte

Byte

short

Short

int

Integer

long

Long

char

Character

float

Float

double

Double

booleanBoolean
  • 包装类的变量默认值可以是null,容错率更高
  • 可以把基本类型的数据转换成字符串类型(调用 基本数据类型的变量.toString()或Integer.toString(基本数据类型的变量)得到字符串)
  • 可以把字符串类型的数值转换成真实的数据类型
//将字符串类型的整数转为int型
int a = Integer.parseInt(“字符串类型的整数”);
int a2 = Integer.valueOf(“字符串类型的整数”);
//将字符串类型的小数转为double型
double b = Double.parseDouble(“字符串类型的小数”);
double b2 = Double.valueOf(“字符串类型的小数”);

2 正则表达式

字符类(默认匹配一个字符)

[abc]只能是a, b, c
[^abc除了a, b, c之外的任何字符
[a-zA-Z] az AZ,包括(范围)
[a-d[m-p]]ad,或m通过p:([a-dm-p]联合)
[a-z&&[def]]  d, e, f(交集)
[a-z&&[^bc]]az,除了bc:([ad-z]减法)
System.out.println("a".matches("[abc]")); // true
System.out.println("z".matches("[abc]")); // false
System.out.println("ab".matches("[abc]")); // false
System.out.println("ab".matches("[abc]+")); //true

预定义的字符类(默认匹配一个字符) 

任何字符

\d 

一个数字: [0-9]

\D 

非数字: [^0-9]

\s 

一个空白字符: [ \t\n\x0B\f\r]

\S 

非空白字符: [^\s]

\w 或 [a-zA-Z_0-9]

英文、数字、下划线
\W 或 [^\w] 一个非单词字符

量词(多个字符)

X?  

X一次或根本没有

X*

X零次或多次

X+ 

X一次或多次

X {n} 

X正好n

X {n, } 

X至少n
X {n,m} X至少n但不超过m
// 验证手机号
boolean p = phoneNumber.matches("1[3-9]\\d{9}");

 public String replaceAll(String regex,String newStr)

按照正则表达式匹配的内容进行替换

public String[] split(String regex)

按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。

// 将字符串里的字母替换成a
String name = "昨天lllll再见bye";
String na = name.split("\\w+", 'a')  // 昨天a再见a
// 遇见字符串里的字母分割
String[] naArr = name.split("\\w+") // [昨天,再见]
/* 正则表达式获取信息 */String rs = "明天你好,我是今天电话123-12322424,邮箱" +"123@qq.com,电话13512345678,0203232323" +"邮箱123@qq.com,123-123-1234 ,1231231234";// 需求:从上面的内容中获取电话号码和邮箱。// 1.规则
String regex = "(\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2})|" + "(1[3-9]\\d{9})|(0\\d{2,5}-?\\d{5,15})|400-?\\d{3,8}-?\\d{3,8}";// 2.编译正则表达式成为一个匹配规则对象
Pattern pattern = Pattern.compile(regex);// 3.通过匹配规则对象得到一个匹配数据内容的匹配器对象
Matcher matcher = pattern.matcher(rs);// 4.通过匹配器去内容中爬取出信息
while(matcher.find()){System.out.println(matcher.group());
}

3 Arrays类

数组操作工具类,操作数组元素

public static String toString​(类型[] a)

返回数组内容的字符串字符串,形状还是数组形状,类型是字符串

public static void sort​(类型[] a)

对数组进行默认升序排序,无返回值

public static <T> void sort​(类型[] a, Comparator<? super T> c)

使用比较器对象自定义排序

public static int binarySearch​(int[] a, int key)

二分搜索数组中的数据,在排好序的数组a种查找key,存在返回索引,不存在返回-1

排序

public static void sort​(类型[] a)

对数组进行默认升序排序

public static <T> void sort​(类型[] a, Comparator<? super T> c)

使用比较器对象自定义排序

// 自定义数组降序排,仅支持引用数据类型
Integer[] a = [1,3,5,9]
Arrays.sort(a, new Comparator<Integer>(){@Overridepublic int compare(Integer a1, Integer a2){return a2 - a1;// 因为返回值必须是整数,若比较的值是浮点型,可以下面这个写法// return Double.compare(a2, a1)}
});

4 Lambda表达式

简化函数式接口的匿名内部类的写法

(匿名内部类被重写方法的形参列表) -> {被重写方法的方法体代码。
}

函数式接口:

  • 必须是接口,并且接口中有且仅有一个抽象方法
  • 通常我们会在接口上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口。
public class LambdaDemo1 {public static void main(String[] args) {goSwimming( new Swimming() {@Overridepublic void swim() {System.out.println("游泳");}} );}public static void goSwimming(Swimming swimming) {swimming.swim();}
}

简化后 swim()

public class LambdaDemo1 {public static void main(String[] args) {goSwimming( () -> {System.out.println("游泳") } );}public static void goSwimming(Swimming swimming) {swimming.swim();}
}
// 自定义数组降序排,仅支持引用数据类型
Integer[] a = [1,3,5,9]
/**
Arrays.sort(a, new Comparator<Integer>(){   @Overridepublic int compare(Integer a1, Integer a2){return a2 - a1;    
});
**/
// 简化后
Arrays.sort(a,(Integer a1, Integer a2) -> {return a2 - a1;    
});

表达式的省略写法

  • 参数类型可以省略不写。
  • 如果只有一个参数,参数类型可以省略,同时()也可以省略。
  • 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号
  • 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略runturn语句的分号
// 简化后
Arrays.sort(a,(a1, a2) -> a2 - a1);

相关文章:

【JAVA】包装类、正则表达式、Arrays类、Lambda表达式

1 包装类 包装类是8种基本数据类型对应的引用类型 作用&#xff1a;后期的集合和泛型不支持基本类型&#xff0c;只能使用包装类 基本数据类型和其对应的引用数据类型的变量可以互相赋值 基本数据类型引用数据类型 byte Byte short Short int Integer long Long ch…...

Java中的Maven Assembly插件是什么?

Maven Assembly插件是Maven中的一个插件&#xff0c;用于创建自定义的构建过程。它允许你在构建过程中执行一些自定义的操作&#xff0c;例如打包、编译、复制文件等。对于新手来说&#xff0c;Maven Assembly插件可能有点复杂&#xff0c;但是我们可以使用一些幽默的方式来解释…...

SpringBoot禁用Swagger3

Swagger3默认是启用的&#xff0c;即引入包就启用。 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version> </dependency> <dependency><groupId…...

小红书Java后端2023-8-6笔试

小红书推荐系统 时间限制&#xff1a;3000MS&#xff1b;内存限制&#xff1a;589824KB 题目描述 小红书有一个推荐系统&#xff0c;可以根据用户搜索的关键词推荐用户希望获取的内容。现在给定小孩的搜索记录&#xff08;记录是分词后的结果&#xff09;&#xff0c;我们认…...

metaRTC7 demo mac/ios编译指南

概要 metaRTC7.0开始全面支持mac/ios操作系统&#xff0c;新版本7.0.023 mac os demo 包含有srs/zlm的推拉流演示。发布版自带了x64版第三方类库&#xff0c;arm版第三方类库还需开发者自己编译。 源码下载 下载文件metartc7.023.7z https://github.com/metartc/metaRTC/re…...

systemd-journal 占用内存的问题

最近发现部分 Debian 机器的 systemd-journal 占用了非常多内存。这和 Debian 对其的 错误配置有关系&#xff08;查了一下其他发行版&#xff0c;有和 Debian 一样的配置的也有和 Debian 不一样 的配置的&#xff0c;说明这个配置有争议&#xff09;。 systemd-journal 简介 …...

Java # Spring(2)

一、Spring事物 一、分类 编程式事物&#xff1a;代码中硬编码&#xff08;不推荐使用&#xff09; 声明式事物&#xff1a;配置文件中配置&#xff08;推荐使用&#xff09; 分类&#xff1a; 基于xml的声明式事物基于注解的声明式事物 二、隔离级别 ISOLATION_DEFAULT&…...

2021年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;石头剪刀布 石头剪刀布是常见的猜拳游戏。石头胜剪刀&#xff0c;剪刀胜布&#xff0c;布胜石头。如果两个人出拳一样&#xff0c;则不分胜负。 一天&#xff0c;小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的&#xff0c;比如&#xff1a;“…...

应用程序运行报错:First section must be [net] or [network]:No such file or directory

应用程序报错环境&#xff1a; 在linux下&#xff0c;调用darknet训练的模型&#xff0c;报错&#xff1a;First section must be [net] or [network]:No such file or directory&#xff0c;并提示&#xff1a;"./src/utils.c:256: error: Assertion 0 failed." 如…...

【ECMAScript】ES6-ES11学习笔记

文章目录 注意事项1.声明变量2.定义常量3.解构赋值4.模板字符串5.简化对象写法6.箭头函数7.参数默认值8.rest参数9.扩展运算符10.Symbol11.生成器函数12.Promise基本语法13.集合set14.Map15.类class16.数值扩展17.对象私有属性18.对象方法扩展19.js文件模块化20.async和await21…...

K8S MetalLB LoadBalancer

1. 简介 kubernetes集群没有L4负载均衡&#xff0c;对外暴漏服务时&#xff0c;只能使用nodePort的方式&#xff0c;比较麻烦&#xff0c;必须要记住不同的端口号。 LoadBalancer&#xff1a;使用云提供商的负载均衡器向外部暴露服务&#xff0c;外部负载均衡器可以将流量路由…...

kubernetes二进制部署2之 CNI 网络组件部署

CNI 网络组件部署 一&#xff1a;K8S提供三大接口1容器运行时接口CRI2云原生网络接口CNI3云原生存储接口CSI 部署 flannelK8S 中 Pod 网络通信&#xff1a;Overlay Network&#xff1a;VXLAN&#xff1a;Flannel:Flannel udp 模式的工作原理&#xff1a;ETCD 之 Flannel 提供说…...

docker通用镜像方法,程序更新时不用重新构建镜像

docker通用镜像方法&#xff0c;程序更新时不用重新构建镜像。更新可执行文件后&#xff0c;重新启动容器就可运行。 功能 1、在demo目录下添加脚本文件start.sh&#xff0c;里面执行demo.jar文件。 2、将demo目录映射到镜像下的 /workspace目录。 3、Dockerfile文件中默认…...

Spring Cloud构建微服务断路器介绍

什么是断路器 断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置&#xff0c;用于在电路上保护线路过载&#xff0c;当线路中有电器发生短路时&#xff0c;“断路器”能够及时的切断故障电路&#xff0c;防止发生过载、发热、甚至起火等严重后果…...

[国产MCU]-BL602开发实例-OLED-SSD1306驱动与U8g2移植

OLED-SSD1306驱动与U8g2移植 文章目录 OLED-SSD1306驱动与U8g2移植1、OLED介绍2、SSD1306介绍2、U8g2介绍3、U8g2移植3.1 定义U8g2图形库的移植函数3.2 移植函数实现3.3 移植函数调用4、驱动测试本文将详细介绍如何在BL602中移植U8g2图形库,并通过U8g2库驱动OLED SSD1306显示屏…...

AWS asg(Auto Scaling Group)部署时报错Error: Termination Reason: Client.InternalError

背景 最近用一个terraform asg模块部署asg时一直报错 Error: Termination Reason: Client.InternalError: Client error on launch 搜索资料发现和KMS下面的asg 对应的policy有关系. 解决方法 在AWS界面找到KMS, 然后找到customer managed key导航栏, 最后找到对应AMI加密用…...

Redis—过期删除策略和内存淘汰策略

目录标题 过期删除策略如何设置过期时间查看key过期时间取消key过期时间如果判定key已过期过期删除策略定时删除惰性删除定期删除 Redis过期删除策略Redis如何实现定期删除第一种版本第二种版本 内存淘汰策略如何设置Redis最大运行内存第一种版本第二种版本 Redis内存淘汰策略不…...

连续两年增收不增利,比亚迪电子靠新能源汽车业务再次起飞?

在净利润连续两年下挫之后&#xff0c;比亚迪电子&#xff08;00285.HK&#xff09;终于迎来了好消息。 不久前比亚迪电子发布2023年中期盈利预告显示&#xff0c;上半年净利润同比增加115%-146%&#xff08;2022年上半年的净利润显示6.34亿元&#xff09;。 这主要受益于大客…...

echarts3d柱状图

//画立方体三个面 const CubeLeft echarts.graphic.extendShape({shape: {x: 0,y: 0,width: 9.5, //柱状图宽zWidth: 4, //阴影折角宽zHeight: 3, //阴影折角高},buildPath: function (ctx, shape) {const api shape.api;const xAxisPoint api.coord([shape.xValue, 0]);con…...

使用webpack插件webpack-dev-server 出现Cannot GET/的解决办法

问题描述 文档地址深入浅出webpack 使用 DevServer运行webpack&#xff0c;跑起来之后提示Cannot GET/&#xff1a; 解决方案&#xff1a; 查阅官方文档 根据目录结构修改对应的配置&#xff1a; 然后就可以成功访问&#xff1a;...

stock-sdk-mcp 的实践整理郊

一、什么是urllib3&#xff1f; urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你&#xff1a; 发送各种 HTTP 请求&#xff08;GET, POST, PUT, DELETE等&#xff09;。 管理连接池&#xff0c;提高网络请求效率。 处理重试和重定向。 支…...

结合强化学习优化Qwen-Image-2512-Pixel-Art-LoRA 的提示词生成策略

结合强化学习优化Qwen-Image-2512-Pixel-Art-LoRA 的提示词生成策略 1. 引言 你有没有过这样的经历&#xff1f;用AI生成像素画时&#xff0c;明明脑子里有个很酷的画面&#xff0c;但写出来的提示词&#xff08;Prompt&#xff09;就是差那么点意思&#xff0c;生成的图片总…...

Wan2.2-I2V-A14B应用场景:AI辅助无障碍——为视障用户提供动态场景语音描述视频

Wan2.2-I2V-A14B应用场景&#xff1a;AI辅助无障碍——为视障用户提供动态场景语音描述视频 1. 场景痛点与解决方案 1.1 视障用户面临的挑战 视觉信息缺失&#xff1a;无法感知动态视频内容&#xff0c;错过大量信息传统方案局限&#xff1a;人工语音描述成本高、实时性差、…...

OpenClaw技能扩展教程:Qwen3-14b_int4_awq实现公众号自动发布

OpenClaw技能扩展教程&#xff1a;Qwen3-14b_int4_awq实现公众号自动发布 1. 为什么需要自动化公众号发布 作为一个技术博主&#xff0c;我每周都要在公众号上发布2-3篇技术文章。最让我头疼的不是写作本身&#xff0c;而是发布前的繁琐流程&#xff1a;手动排版Markdown、设…...

【GraalVM静态镜像内存优化终极指南】:20年JVM专家亲授3大内存压缩技法,启动速度提升87%的私密实践

第一章&#xff1a;GraalVM静态镜像内存优化快速接入全景概览GraalVM 静态镜像&#xff08;Native Image&#xff09;通过提前编译&#xff08;AOT&#xff09;将 Java 应用编译为独立、无 JVM 依赖的原生可执行文件&#xff0c;在启动速度与内存占用方面具备显著优势。然而&am…...

AI+声学:当物理规律遇见神经网络,如何颠覆传统模拟?

AI声学&#xff1a;当物理规律遇见神经网络&#xff0c;如何颠覆传统模拟&#xff1f; 引言 想象一下&#xff0c;模拟一个大型音乐厅的声场分布&#xff0c;传统方法可能需要超级计算机数小时的计算&#xff0c;而AI模型仅需秒级响应。这并非科幻&#xff0c;而是“AI for Sci…...

这本《大语言模型》直接封神,清华张亚勤盛赞“入门圣经”,A100集群训练日志全公开!

《大语言模型》由赵鑫教授领衔&#xff0c;系统拆解大语言模型全流程&#xff0c;含预训练、微调、部署等核心内容&#xff0c;并曝光“毒数据”识别技巧。书中案例支持端到端复现&#xff0c;配套YuLan大模型和LLMBox工具库&#xff0c;适合入门学习。当DeepSeek开出11w*14薪抢…...

[Refactor]CPP Learn Data Day 馁

一、什么是urllib3&#xff1f; urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你&#xff1a; 发送各种 HTTP 请求&#xff08;GET, POST, PUT, DELETE等&#xff09;。 管理连接池&#xff0c;提高网络请求效率。 处理重试和重定向。 支…...

广告生成工作流平替工具

针对企业宣发的合规痛点&#xff0c;OhYesAI整合元婴、可灵等自选渲染引擎。系统以原生闭环生成替代多工具拼接工作流&#xff0c;输出支持商业授权的音画资产&#xff0c;旨在从底层规避版权确权风险。OhYesAI 架构深度解析&#xff1a;品牌宣传中原生合规引擎如何替代离散拼接…...

拓朋A50Ex自组网防爆对讲机,守护矿山救援队安全通讯

在深邃复杂的矿山巷道&#xff0c;安全与沟通是每位救援队员与作业人员最为关心的两大要素。在这样一片黑暗而充满挑战的天地里&#xff0c;拓朋A50Ex自组网防爆对讲机以其出色的性能&#xff0c;悄然成为了矿山救援队的隐形守护者。 无惧复杂环境&#xff0c;沟通无阻 矿山内部…...