4.7串讲

article/2025/6/27 9:47:40

4.7串讲 Java基础API

文章目录

  • 4.7串讲 Java基础API
    • 字符串
      • 字符
      • 字符串
      • `StringBulider`,`StringBuffer`
    • 内存结构
    • 正则表达式
      • 字符
      • 字符类
      • 预定义字符类
      • POSIX字符类(仅US-ASCII)
      • java.lang.Character 类(简单的 java 字符类型)
      • Unicode 块和类别的类
      • 边界匹配器
      • Greedy 数量词
      • Reluctant 数量词
      • Possessive 数量词
      • Logical 运算符
      • Back 引用
      • 引用
      • 特殊构造(非捕获)
    • 集合
      • ArrayList
      • HashSet
      • Collections常用方法

字符串

字符

  • 在java中字符类型是char

  • 用单引号括起来的,有且只有1个

  • ‘a’ ‘b’ ‘中’

字符串

  • 0或多个字符组成

  • java中专门提供了一个类用来处理字符串(String)

  • String是在java的默认包下(java.lang),无需手动导入即可使用

  • 用双引号引起来的,可以为空,也可以是多个

  • String类提供一些列的字符串处理方法

方法介绍
length()获取字符串长度
trim()去除当前字符串两边的空白符
charAt()返回当前字符指定位置上的字符,根据位置擦查找字符
indexOf()检索给定字符串在当前字符串中第一次出现的位置
toUpperCase()将当前字符串中英文部分转换为大写
toLowerCase()将当前字符串中英文部分转换为小写
substring()截取当前字符串中指定范围的字符串(含头不含尾)
split()根据匹配项拆分字符串为字符串数组
startsWith()判断当前字符串中是否以给定字符串开始
endsWith()判断当前字符串中是否以给定字符串结尾
equals()字符串之间做比较
lastIndexOf()检索给定字符串在当前字符串中最后一次出现的位置
isEmpty()判断当前字符串是否为空
matchs()指定此字符串是否与给定的正则表达式匹配
valueOf()由基本数据类型转换成String类型
replace()查找并替换与regexp相匹配的子字符串
  • 字符串一旦创建就不可以改变

StringBuliderStringBuffer

  • 用法一样

  • StringBuilder:效率高,但是线程不安全

  • StringBuffffer:效率低,但是线程安全

  • 创建一个对象,在一个对象上进行修改

  • 常用方法:

方法介绍
append()追加内容
delete()删除部分内容
insert()插入内容
replace()替换部分内容(含头不含尾)
reverse()反转字符串内容

内存结构

在这里插入图片描述

正则表达式

  • 作用: 主要用来判断字符串是否符合某种格式,或者查找、替换规则字符串
  • 使用场景如: 用户名,邮箱、手机号验证等
  • java 中的正则在java.util.regex包下

字符

x 字符 x
\\ 反斜线字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符

字符类

[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

POSIX字符类(仅US-ASCII)

\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r]

java.lang.Character 类(简单的 java 字符类型)

\p{javaLowerCase} 等效于 java.lang.Character.isLowerCase()
\p{javaUpperCase} 等效于 java.lang.Character.isUpperCase()
\p{javaWhitespace} 等效于 java.lang.Character.isWhitespace()
\p{javaMirrored} 等效于 java.lang.Character.isMirrored()

Unicode 块和类别的类

\p{InGreek} Greek 块(简单块)中的字符
\p{Lu} 大写字母(简单类别)
\p{Sc} 货币符号
\P{InGreek} 所有字符,Greek 块中的除外(否定)
[\p{L}&&[^\p{Lu}]] 所有字母,大写字母除外(减去)

边界匹配器

^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

Greedy 数量词

X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

Reluctant 数量词

X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n 次
X{n,}? X,至少 n 次
X{n,m}? X,至少 n 次,但是不超过 m 次

Possessive 数量词

X?+ X,一次或一次也没有
X*+ X,零次或多次
X++ X,一次或多次
X{n}+ X,恰好 n 次
X{n,}+ X,至少 n 次
X{n,m}+ X,至少 n 次,但是不超过 m 次

Logical 运算符

XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组

Back 引用

\n 任何匹配的 nth 捕获组

引用

\ Nothing,但是引用以下字符
\Q Nothing,但是引用所有字符,直到 \E
\E Nothing,但是结束从 \Q 开始的引用

特殊构造(非捕获)

(?:X) X,作为非捕获组
(?idmsux-idmsux) Nothing,但是将匹配标志i d m s u x on - off
(?idmsux-idmsux:X) X,作为带有给定标志 i d m s u x on - off
的非捕获组 (?=X) X,通过零宽度的正 lookahead
(?!X) X,通过零宽度的负 lookahead
(?<=X) X,通过零宽度的正 lookbehind
(?<!X) X,通过零宽度的负 lookbehind
(?>X) X,作为独立的非捕获组

集合

在这里插入图片描述

ArrayList

List<String> list = new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("王麻子");
list.add("王麻子");
list.add("tom");
for (int i=0;i<list.size();i++){System.out.println(list.get(i));
}
System.out.println("---------------");
for (String name: list ) {System.out.println(name);
}
System.out.println("---------------");
Iterator it = list.iterator();
while(it.hasNext()){System.out.println(it.next());
}
System.out.println("---------------");
list.forEach(name-> System.out.println(name));
System.out.println("---------------");
list.forEach(System.out::println);

HashSet

Set<String> set = new HashSet<>();
set.add("zhangsan");
set.add("lisi");
set.add("王麻子");
set.add("王麻子");
set.add("tom");
Iterator<String> it = set.iterator();
while(it.hasNext()){System.out.println(it.next());
}
System.out.println("------------");
for (String name: set ) {System.out.println(name);
}
System.out.println("------------");
set.forEach(name-> System.out.println(name));
System.out.println("------------");
set.forEach(System.out::println);

Collections常用方法

方法介绍
add()向集合中添加一个元素,成功添加则返回true,否则返回false
addAll()将参数集合中的元素添加到当前集合中,添加后当前集合发生改变返回true
list()返回一个数组列表,包含指定枚举返回元素
remove()从集合中删除给定元素(equals()相等为true),成功删除则返回true
replaceAll()用于将列表中一个指定值的所有出现替换为另一个
reverse()集合反转

集合泛型类型只能写包装类,不能用基本类型


http://chatgpt.dhexx.cn/article/ALKo5U0N.shtml

相关文章

计算机网络知识串讲复习(超全)

本篇我总结了学习计算机网络时必备的知识&#xff0c;可以用于巩固知识或者期末复习~~~如果觉得博主爆肝总结的不错&#xff0c;感谢点赞! 目录 1、计算机网络的几个发展阶段 2、计算机网络的组成 3、协议的概念 4、实体,协议,服务,和服务访问点 5、计算机网络的分类 6、…

CLIP改进工作串讲(上)

CLIP改进工作串讲&#xff08;上&#xff09; 本文为 CLIP 改进工作串讲&#xff08;上&#xff09;【论文精读】 的学习笔记。 CLIP 改进方向 语义分割 Lseg、GroupViT 目标检测 ViLD、GLIP v1/v2 视频理解 VideoCLIP、CLIP4clip、ActionCLIP 图像生成 VQGAN-CLIP、CLIPass…

毕业知识串讲

1. 京淘后端项目架构 1.1 数据库主从同步 1.1.1 业务需求说明 当数据库发生宕机的现象,如果配置了数据库主从同步,则可以从从库中获取现有记录,显示数据的恢复. 1.2 数据库主从同步原理 1.2.1 数据库冷备份 说明: 人工的将数据库文件定期导出,一式三份 如果其中一份丢失…

如何做好技术串讲

首先&#xff0c;如何做好演讲是个好话题&#xff0c;不过这过于大众的主题不想写&#xff0c;除非哪天能想到点 新意 再说&#xff1b; 其次&#xff0c;串讲和演讲有啥区别呢&#xff1f;其实也没啥区别&#xff0c;一会儿说说我自己的理解&#xff1b; 最后&#xff0c;什么…

软件开发过程与项目管理(8.软件项目质量计划)

软件开发过程与项目管理&#xff08;8.软件项目质量计划&#xff09; 课件 软件质量基本概念 质量定义 质量是满足要求的程度&#xff0c;包括符合规定的要求和满足顾客隐含需求。 软件质量定义 软件质量是软件满足明确说明或者隐含的需求的程度 质量与等级 质量与等级…

软件项目开发基本流程详解

软件项目开发流程图是用来详细描述了软件在开发过程中产品调研、设计、开发、测试等各个阶段中各个角色&#xff0c;包含产品经理、研发、测试、用户等需要处理的事情&#xff0c;以及在不同阶段可以达到哪种效果。那么&#xff0c;一款软件从研发到发布到底要经过哪些流程呢?…

嵌入式软件开发流程

根据使用的开发工具套件不同&#xff0c;软件开发流程会有差异&#xff0c;但主要步骤大致相同。对于使用宿主机&#xff08;PC&#xff09;的集成化开发环境&#xff0c;软件开发流程一般包括创建项目、添加文件、编译连接、下载调试等步骤&#xff0c;如下图所示。 图1&#…

软件项目开发流程以及人员职责,软件工程中五种常用的软件开发模型整理

文章目录 一、软件项目开发流程逻辑图开发流程需求分析概要设计详细设计编码测试软件交付验收维护 软件维护软件升级 软件项目开发流程以及人员职责软件工程中五种常用的软件开发模型整理软件系统开发流程七大详细步骤完整介绍 一、软件项目开发流程逻辑图 这张图应该清楚的说…

软件工程项目流程

软件工程项目流程 1.1 项目合作与成员 根据本项目的工作内容和范围,我们将成立一个20人左右的项目工作组来负责本项目的开发。 1.2 项目实施方法 项目管理的成效直接关系到整个项目的成败。尤其是实施与移动互联网有关的新技术应用项目,无论在国内和国外都是有一定难度的,更…

软件工程----开发大致流程

软件开发的流程 需求分析概要设计项目计划详细设计编码测试项目测试项目部署后期运维软件开发注意事项 不同的软件项目&#xff0c;有不同的需求侧重点&#xff0c;开发流程也是不一样的。比如开发一个大型Web电商项目&#xff0c;这个往往需要采用前后端分离的方式&#xff0c…

软件项目开发流程逻辑图

相关链接&#xff1a; 软件项目规划大纲知识点

软件项目的开发流程

一个项目的开发流程 软件开发流程(Software development process) 1.项目启动 1、项目组成立(公司成员、客户成员) 2、制定项目预期目标 3、制定项目计划周期 4、建立好项目组成员沟通机制 2.需求调研 1、创建调研计划、协调调研时间 2、收集客户资料,获取客户需求 …

软件项目开发流程

软件开发流程&#xff08;Software development process&#xff09; 首先 看一下基本软件项目开发流程图 其中 1.需求分析&#xff1a;通过对客户业务的了解和与客户对流程的讨论对需求进行基本建模&#xff0c;最终形成需求规格说明书。2.总体设计&#xff1a;通过分析需求信…

一个完整的软件项目开发流程,软件过程,软件生命周期

一、开发流程图 1、需求分析 结构化分析面向对象分析 2、原型设计 结构化设计面向对象设计 3、程序开发 结构化开发面向对象开发 4、程序测试 二、软件生命周期 软件分析 1、问题定义 确定好要解决的问题是什么&#xff08;what&#xff09;&#xff0c;通过对客户的访问…

软件项目开发的完整流程

APP早已与我们的生活息息相关&#xff0c;一款APP从开发到上线需要哪些步骤&#xff0c;开发一个APP要多长时间&#xff0c;今天和大家分享一下完整的开发流程。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1、需求的整理 和开发传…

软件开发的一般流程

说明&#xff1a; 最初所有的开发工作都是由后端工程师完成的&#xff0c;随着业务越来越繁杂&#xff0c;工作量变大&#xff0c;于是我们将项目中的可视化部分和一部分交互功能的开发工作剥离出来&#xff0c;形成了前端开发。 大约从2005年开始正式的前端工程师角色被行业所…

git创建分支及合并

git创建分支及合并 1、在远端创建自己的分支 2、在本地创建自己的分支,并切换到自己的分支 git branch newbranch git checkout newbranch 3、将远端和本地分支关联起来 git branch --set-upstream-toorigin/newbranch newbranch git pull 4、在本地分支修改代码&#xff…

IDEA中如何进行GIT分支合并

明确一点&#xff1a; 如果项目交给git管理了【如何将项目交给git管理&#xff1a;https://www.cnblogs.com/sxdcgaq8080/p/8058898.html】 1.若文件显示红色&#xff0c;表示文件未add到git进行管理 2.若文件显示绿色&#xff0c;表示文件已经交给git管理&#xff0c;但从未…

Git 分支合并策略

在实际开发中&#xff0c;我们应该按照几个基本原则进行分支管理&#xff1a; 首先&#xff0c;master分支应该是非常稳定的&#xff0c;也就是仅用来发布新版本&#xff0c;平时不能在上面干活&#xff1b; 那在哪干活呢&#xff1f;干活都在dev分支上&#xff0c;也就是说&am…

git 分支代码合并

由于要开发一个新功能&#xff0c;但是后台接口数据都不确定&#xff0c;我打算切一个分支&#xff0c;在分支上进行开发测试&#xff0c;以下是合并分支的步骤&#xff1a;&#xff08;建议在test分支解决冲突&#xff0c;不要在master分支解决冲突&#xff09; 下图是在test…