【进阶篇-Day6:JAVA中Arrays工具类、排序算法、正则表达式的介绍】

目录

  • 1、Arrays工具类
  • 2、排序算法
    • 2.1 冒泡排序
    • 2.2 选择排序
    • 2.3 二分查找(折半查找)
      • (1)概念:
      • (2)步骤:
  • 3、正则表达式
    • 3.1 正则表达式的概念:
    • 3.2 正则表达式的格式:
      • (1)单个字符类:
      • (2)预定义字符类:
      • (3)数量:
    • 3.3 练习:
    • 3.4 String类中与正则有关的常见方法:

1、Arrays工具类

在这里插入图片描述

package it.heima;
import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {int[] arr1 = {11,22, 33,44, 55};int[] arr2 = {11,22, 33,44, 55};//1、Arrays.toString():将数组元素拼接为带有格式的字符串System.out.println(Arrays.toString(arr1));//[11, 22, 33, 44, 55]//2、Arrays.equals(arr1, arr2):比较两个数组内容是否相等System.out.println(arr1 == arr2);//falseSystem.out.println(Arrays.equals(arr1, arr2));//true//3、查找元素在数组中的索引(二分查找发:必须是排好序的数组)System.out.println(Arrays.binarySearch(arr1, 44));//3System.out.println(Arrays.binarySearch(arr1, 66));//-6 查找的元素不存在返回 -(插入点) - 1//4、对数组进行默认的升序排序。如果降序需要指定比较器,后续介绍 todoint[] arr3 = {11,77, 33,88, 55};int[] arr4 = {11,77, 33,88, 55};Arrays.sort(arr3);System.out.println(Arrays.toString(arr3));}
}

2、排序算法

2.1 冒泡排序

在这里插入图片描述

package it.heima;
import java.util.Arrays;public class BubbleSort {public static void main(String[] args) {int[] arr = {6, 3, 9, 2, 8, 4};//外循环:比较轮次for (int i = 0; i < arr.length - 1; i++) {//内循环:比较次数for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] < arr[j + 1]){//从大到小:将最小的冒泡到最上面int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println(Arrays.toString(arr));}
}

2.2 选择排序

在这里插入图片描述

package it.heima;
import java.util.Arrays;public class SelectSort {public static void main(String[] args) {int[] arr = {6, 3, 9, 2, 8, 4};for (int i = 0; i < arr.length; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]){ //从小到大排序int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}System.out.println(Arrays.toString(arr));//[2, 3, 4, 6, 8, 9]}
}

2.3 二分查找(折半查找)

(1)概念:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)步骤:

第一步:
在这里插入图片描述
第二步:

在这里插入图片描述
第三步:

在这里插入图片描述

总结:
在这里插入图片描述

案例:

package it.heima;public class BinarySearch {public static void main(String[] args) {int num = 33;int[] arr = {11,22,33,44,55,66,77,88,99,100};int left = 0;int right = arr.length - 1;int mid = -1;while (left <= right){mid = (left + right) / 2;if (arr[mid] < num){//说明在右边left = mid + 1;}else if (arr[mid] > num){//说明在左边right = mid - 1;}else {break;}}if (mid != -1){System.out.println("找到了,所在位置为:" + mid);}}
}

3、正则表达式

3.1 正则表达式的概念:

在这里插入图片描述

3.2 正则表达式的格式:

在这里插入图片描述

(1)单个字符类:

就是这个位置的字符的取值范围,直接看代码理解:

package it.heima.regex;public class RegexDemo {public static void main(String[] args) {/*** 注:* []:代表单个字符的取值,例如[a]表示这个位置的字符只能是a,[ab]表示这个位置的字符只能为a或b* ^:代表取反,例如[^a]表示这个位置可以为除了字符a其他任意一个字符,[^ab]表示这个位置可以为除了字符a和b的其他任意一个字符* -:代表范围,例如[a-z]表示这个位置可以为a到z的任意一个字符,[0-9]表示这个位置可以为0到9的任意一个字符*///(1):[abc]————————》只能是abc中的一个String s1 = "[abc]";System.out.println("b".matches(s1));//trueSystem.out.println("ab".matches(s1));//false//(2):[^abc]————————》除了abc外的任意一个String s2 = "[^abc]";System.out.println("b".matches(s2));//falseSystem.out.println("x".matches(s2));//true//(3):[a-zA-Z]————————》a到z,A到Z,包括(范围)String s3 = "[a-zA-Z]";System.out.println("0".matches(s3));//falseSystem.out.println("x".matches(s3));//true//(4):[a-d[m-p]]————————》a到z,m-p,可以写成[a-dm-p]String s4 = "[a-d[m-p]]";System.out.println("e".matches(s4));//falseSystem.out.println("n".matches(s4));//true//(5):[a-z&&[def]]————————》a到z中,只有def可以选择,可以写成[def]String s5 = "[a-z&&[def]]";System.out.println("e".matches(s5));//trueSystem.out.println("a".matches(s5));//false//(6):[a-z&&[^bc]]————————》a到z中,除了bc,其他都可以,可以写成[ad-z]String s6 = "[a-z&&[^bc]]";System.out.println("g".matches(s6));//trueSystem.out.println("c".matches(s6));//false//(7):[a-z&&[^m-p]]————————》a到z中,除了m-p,其他都可以,可以写成[a-lq-z]String s7 = "[a-z&&[^m-p]]";System.out.println("e".matches(s7));//trueSystem.out.println("n".matches(s7));//false}
}

(2)预定义字符类:

就是把单个字符的一些常用写法,用别的方式代替了。直接看代码理解:

package it.heima.regex;public class RegexDemo2 {public static void main(String[] args) {/*** 预定义字符类:** .: 代表任意一个字符* \d:代表一个数字,和[0-9]一个作用* \: 代表转义字符,就是把当前字符的含义,转义成另一种含义,例如"\t",表示将当前的t转换成tab健* \D:代表非数字,和[^0-9]一个作用* \s:代表一个空白字符* \S:代表一个非空白字符* \w:代表英文、数字、下划线,等于[a-zA-Z_0-9]* \W:代表一个非单词字符,等于[^\w]**///(1):.————————》代表任意一个字符String s1 = ".";System.out.println("a".matches(s1));//trueSystem.out.println("*".matches(s1));//true//(2):/d————————》代表一个数字,和[0-9]一个作用String s2 = "\\d";//注意:\为转义字符,这里第一个\转义第二个\为字符\System.out.println("a".matches(s2));//falseSystem.out.println("4".matches(s2));//true//(3):\D————————》代表非数字,和[^0-9]一个作用String s3 = "\\D";System.out.println("a".matches(s3));//trueSystem.out.println("4".matches(s3));//false//(4):\s————————》代表一个空白字符String s4 = "\\s";System.out.println(" ".matches(s4));//trueSystem.out.println("4".matches(s4));//false//(5):\S————————》代表一个非空白字符String s5 = "\\S";System.out.println(" ".matches(s5));//falseSystem.out.println("4".matches(s5));//true//(6):\w————————》代表英文、数字、下划线,等于[a-zA-Z_0-9]String s6 = "\\w";System.out.println("F".matches(s6));//trueSystem.out.println("*".matches(s6));//false//(7):\W————————》代表一个非单词字符,等于[^\w]String s7 = "\\W";System.out.println("F".matches(s7));//falseSystem.out.println("*".matches(s7));//true}
}

(3)数量:

就是指定出现的次数。

package it.heima.regex;public class RegexDemo3 {public static void main(String[] args) {/*** 数量:* ?:代表0次或1次,例如 a?就表示a可以为0次或1次* *:代表0次或多次,例如 a*就表示a可以为0次或多次(任意次数)* +:代表1次或多次,例如 a*就表示a可以为1次或多次* {n}:代表正好n次,例如 a{3}表示a正好3次* {n,}:代表至少n次,例如 a{3,}表示a至少3次* {n,m}:代表至少n次,但不超过m次,例如 a{3,6}表示a至少3次但不超过6次**///(1):?————————》代表0次或1次String s1 = "2?";System.out.println("223".matches(s1));//falseSystem.out.println("".matches(s1));//true//(2):?————————》代表0次或多次(任意次数)String s2 = "2*";System.out.println("222222".matches(s2));//trueSystem.out.println("".matches(s2));//true//(3):+————————》代表1次或多次String s3 = "2+";System.out.println("222222".matches(s3));//trueSystem.out.println("2".matches(s3));//trueSystem.out.println("".matches(s3));//false//(4):{n}————————》代表正好n次String s4 = "2{3}";System.out.println("222222".matches(s4));//falseSystem.out.println("222".matches(s4));//true//(5):{n,}————————》代表至少n次String s5 = "2{3,}";System.out.println("222222".matches(s5));//trueSystem.out.println("22".matches(s5));//false//(5):{n,m}————————》代表至少n次,但不超过m次String s6 = "2{3,6}";System.out.println("22222".matches(s6));//trueSystem.out.println("22".matches(s6));//falseSystem.out.println("22222222".matches(s6));//false}
}

3.3 练习:

在这里插入图片描述

package it.heima.regex;public class Test {public static void main(String[] args) {String qqRegex = "[1-9]\\d{4,11}";System.out.println("1917609089".matches(regex));//trueSystem.out.println("0917609089".matches(regex));//falseSystem.out.println("1917609089000".matches(regex));//false}
}

在这里插入图片描述

package it.heima.regex;public class Test {public static void main(String[] args) {String telRegex = "1[3-9]\\d{9}";System.out.println("16769342819".matches(telRegex));//trueSystem.out.println("56769342819".matches(telRegex));//falseSystem.out.println("11769342819".matches(telRegex));//falseSystem.out.println("167693428190".matches(telRegex));//false}
}

在这里插入图片描述

package it.heima.regex;public class Test {public static void main(String[] args) {String emailRegex = "\\w+[@][\\w&&[^_]]+(\\.[a-z]{2,3})+";System.out.println("zhangsan@163.com".matches(emailRegex));//trueSystem.out.println("16769342819@3232qq.com".matches(emailRegex));//trueSystem.out.println("16769342819".matches(emailRegex));//false}
}

3.4 String类中与正则有关的常见方法:

在这里插入图片描述

package it.heima.regex;public class Test2 {public static void main(String[] args) {String s = "先帝1创业2未半而中道3崩殂4,今5天下三分6,益州疲弊7,此8诚危急存亡之秋也。然9侍卫之臣不懈于内,忠志之士忘身10于外者,盖追先帝之殊遇11,欲报之于陛下也。诚宜12开张圣听13,以光14先帝遗德,恢弘15志士之气,不宜妄自菲薄16,引喻失义17,以塞忠谏之路也18。\n" +"宫中府中,俱为一体19;陟罚臧否20,不宜异同:若有作奸犯科21及为忠善者22,宜付有司23论其刑赏24,以昭陛下平明之理25;不宜偏私26,使内外异法也27。\n" +"侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯28,是以先帝简拔以遗陛下29:愚以为宫中之事,事无大小,悉以咨之30,然后施行,必能裨补阙漏31,有所广益32。\n" +"将军向宠,性行淑均33,晓畅34军事,试用35于昔日,先帝称之曰“能”,是以众议举宠为督36:愚以为营37中之事,悉以咨之,必能使行阵38和睦,优劣得所39。";s = s.replaceAll("[0-9]", " ");//将s中的数字用空格替换System.out.println(s);}
}

在这里插入图片描述

  • 代码:
package it.heima.regex;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test3 {public static void main(String[] args) {String data = "来小马课堂学习Java,电话:18666668888,18699998888或者联系" +"邮箱1:boniu@itcast.cn 邮箱2:bozai@itcast.cn 邮箱3:dlei0009@163.com" +"座机电话:01036517895,010-98951256" +"热线电话:400-618-9090,400-618-4000,4006184000,4006189090";//1、定义爬取正则String regex = "1[3-9]\\d{9}|\\w+@[\\w&&[^_]]+(\\.[a-z]{2,3})+|0\\d{2,3}-?\\d{7,8}|400-?\\d{3}-?\\d{4}";//2、将正则表达式封装为 Pattern 对象Pattern pattern = Pattern.compile(regex);//3、获取匹配器对象Matcher matcher = pattern.matcher(data);//4、通过匹配器,从内容中爬取信息while (matcher.find()){System.out.println(matcher.group());}}
}
  • 输出:
18666668888
18699998888
boniu@itcast.cn
bozai@itcast.cn
dlei0009@163.com
01036517895
010-98951256
400-618-9090
400-618-4000
4006184000
4006189090Process finished with exit code 0

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

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

相关文章

Unidbg调用-补环境V3-Hook

结合IDA和unidbg,可以在so的执行过程进行Hook,这样可以让我们了解并分析具体的执行步骤。 应用场景:基于unidbg调试执行步骤 或 还原算法(以Hookzz为例)。 1.大姨妈 1.1 0x1DA0 public void hook1() {

【项目日记(二)】搜索引擎-索引制作

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.索引结构2.1创捷索引2.2根据索引查询2.3新增文档2.4内存索引保存到磁盘2.5把…

U-Net for text-to-image

1. Unet for text-to-image 笔记来源&#xff1a; 1.hkproj/pytorch-stable-diffusion 2.understanding u-net a comprehensive tutorial 3.Deep Dive into Self-Attention by Hand 4.Towards Understanding Cross and Self-Attention in Stable Diffusion for Text-Guided Im…

java大型医院绩效考核系统源码(医院为什么需要绩效机制?)医院绩效考核系统源码 医院管理绩效考核系统源码

java大型医院绩效考核系统源码&#xff08;医院为什么需要绩效机制&#xff1f;&#xff09;医院绩效考核系统源码 医院管理绩效考核系统源码 医院作为提供医疗服务的核心机构&#xff0c;其运营和管理效率直接影响到患者的就医体验、治疗效果以及医院的长期发展。因此&#xf…

构造函数的小白理解

一、实例 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;//定义一个名为Question的类&#xff0c;用于存储问题及相关信息 [Serializable] public class Question {public string questionText;//存储题目文本字段public str…

Unix/Linux shell实用小程序1:生字本

前言 在日常工作学习中&#xff0c;我们会经常遇到一些不认识的英语单词&#xff0c;于时我们会打开翻译网站或者翻译软件进行查询&#xff0c;但是大部分工具没有生词本的功能&#xff0c;而有生字本的软件又需要注册登陆&#xff0c;免不了很麻烦&#xff0c;而且自己的数据…

风控图算法之中心性算法(小数据集Python版)

风控图算法之中心性算法&#xff08;小数据集Python版&#xff09; 图算法在金融风控领域的应用已经超越了传统的社区发现技术&#xff0c;这些技术曾被主要用于识别和分析欺诈性行为模式&#xff0c;例如黑产团伙。当前&#xff0c;一系列图统计算法&#xff0c;包括介数中心…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数&#xff1a; EXPLODE(ARRAY)&#xff1a;将ARRAY中的每一元素转换为每一行 EXPLODE(MAP)&#xff1a;将MAP中的每个键值对转换为两行&#xff0c;其中一行数据包含键&#xff0c;另一行数据包含值 数据样例&#xff1a; 1、将每天的课程&#…

ServletConfig与ServletContext详解

文章目录 概要web.xmlServletConfig介绍ServletConfig实例ServletConfig细节ServletContext介绍ServletContext实例ServletContext细节ServletContext获得服务访问次数&#xff08;可拓展&#xff09;总结 概要 web.xml <?xml version"1.0" encoding"UTF-…

OBD诊断(ISO15031) 02服务

文章目录 功能简介请求和响应1、read-supported PIDs1.1、请求1.2、肯定响应 2、read PID value1.1、请求1.2、肯定响应 3、同时请求多个PID4、同时读取多个PID数据 Parameter definition报文示例1、单个PID请求和读取2、多个PID请求和读取 功能简介 02服务&#xff0c;即 Req…

亚太杯赛题思路发布(中文版)

导读&#xff1a; 本文将继续修炼回归模型算法&#xff0c;并总结了一些常用的除线性回归模型之外的模型&#xff0c;其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…

UI(三)布局

文章目录 1、Colum和Row——垂直方向容器和水平方向容器2、ColumnSplit和RowSplit——子组件之间插入一条分割线3、Flex——弹性布局子组件的容器4、Grid和GridItem——网格容器和网格容器单元格5、GridRow和GridCol——栅格容器组件和栅格子组件6、List、ListItem、ListItemGr…

力扣每日一题 6/28 动态规划/数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目&#xff1a; 给你两个长度为 n 下标从 0…

密码学及其应用 —— 非对称加密/公匙密码技术

1 RSA加密算法 RSA加密算法是一种基于公钥密码学的加密技术&#xff0c;由罗纳德里维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;在1977年共同发明。RSA算法是第一个既能用于…

C++ sizeof的各种

C sizeof的各种 1. 含有虚函数的类对象的空间大小2. 虚拟继承的类对象的空间大小3. 普通变量所占空间大小4. 复合数据类型&#xff08;结构体和类&#xff09;5. 数组6. 类型别名7. 动态分配内存8. 指针9. 静态变量10. 联合体11. 结构体使用#program pack 1. 含有虚函数的类对象…

RuoYi_Cloud本地搭建

1.进入若依官网获取git地址 &#xff08;1&#xff09;百度搜“若依官网进”入如下界面 &#xff08;2&#xff09;点击进入git&#xff0c;点克隆下载 &#xff08;3&#xff09;复制http地址 2.在git链接在idea本地打开 &#xff08;1&#xff09;返回桌面——右键&#xf…

金属波纹管

金属波纹管是一种外型规则的波浪样的管材&#xff0c;常用的金属波纹管有碳钢的&#xff0c;和不锈钢的&#xff0c;也有钢质衬塑的、铝质的等等。这种管材主要用于需要很小的弯曲半径非同心轴向传动&#xff0c;或者不规则转弯、伸缩&#xff0c;或者吸收管道的热变形等&#…

数据结构历年考研真题对应知识点(数组和特殊矩阵)

目录 3.4数组和特殊矩阵 3.4.2数组的存储结构 【二维数组按行优先存储的下标对应关系(2021)】 3.4.3特殊矩阵的压缩存储 【对称矩阵压缩存储的下标对应关系(2018、2020)】 【上三角矩阵采用行优先存储的应用(2011)】 【三对角矩阵压缩存储的下标对应关系(2016)】 3.4.…

为什么有的手机卡没有语音功能呢?

大家好&#xff0c;今天这篇文章为大家介绍一下&#xff0c;无通话功能的手机卡&#xff0c; 在网上申请过手机卡的朋友应该都知道&#xff0c;现在有这么一种手机卡&#xff0c;虽然是运营商推出的正规号卡&#xff0c;但是却屏蔽了通话功能&#xff0c;你知道这是为什么吗&am…

自组装mid360便捷化bag包采集设备

一、问题一&#xff1a;电脑太重&#xff0c;换nuc 采集mid360数据的过程中&#xff0c;发现了头疼的问题&#xff0c;得一手拿着电脑&#xff0c;一手拿着mid360来采集&#xff0c;实在是累胳膊。因此&#xff0c;网购了一个intel nuc, 具体型号是12wshi5000华尔街峡谷nuc12i…