关于java.lang.String常用方法全解析以及代码单元、码点等的总结思考

发布时间:2026/7/15 16:09:06

关于java.lang.String常用方法全解析以及代码单元、码点等的总结思考
String类的使用频率非常高几乎所有的String API都很有用。代码单元定义字符编码的最小存储单位char charAt(int index):返回指定位置的代码单元。通常来说在java中字母以及一些常用的字符都是一个代码单元的。java在内存中的字符编码是utf16而在源码文件和class文件中编码是utf8。在utf8中一个汉字占3个字节(2万多汉字)或4个字节(5万多汉字)而utf8是网络传输中最通用的字符编码。在utf16中一个汉字占2个字节少数汉字占用4个字节。uft8是可变编码占用1~6字节。一个字节就是一个代码单元。uft16也是可变编码占用2个或者4个字节。两个字节就是一个代码单元。汉字数量太多往往一个代码单元表示不了。我们只考虑java在运行时对汉字的编码因为运行时才是关键即认识到java运行时的编码(也叫作内码)采用的是utf16编码。一个代码单元就是2个字节(16位)。有些生僻字符(比如一些生僻汉字)占用2个代码单元(32位)即4个字节。码点定义一个字符对应的编码可以简单的理解为字符。即**一个码点就是一个字符。**根据上面所说的一个码点可以是1个或2个代码单元组成。2个代码单元组成的字符也称作辅助字符。int codePointAt(int index):返回指定位置的开始的码点。 int offsetByCodePoints(int startIndex, int cpCount):返回从startIndex码点开始cpCount个码点后的码点索引这里有我弄了比较久才理解的东西。什么叫做指定位置、码点索引第二个方法是不是有病啊我都知道初始码点索引和向后推的码点个数了为什么还有这个方法来计算码点索引呢直接做个加法不就好了看一下代码Strings123;可以知道它是4个字符4个码点字符长度是5有5个代码单元。随便说一下java中的字符长度length()就是代码单元长度和我们平常理解的字符个数不是绝对等同的一个东西(虽然大多数是相同的值于是乎变成了一个难以发现的坑)。码点索引如下我们有字符“123”1码点索引02码点索引13码点索引2码点索引3和4可以看到第四个字符(码点)占用了两个码点索引。虽然书上是说叫做码点索引但是理解起来跟寻常思维不一样我个人将指定位置和码点索引理解为代码单元索引(也可能是原版英文译为中文时的错误)。可以说java中任何涉及到字符串位置、索引(比如上面的码点索引)之类的东西一律都视为代码单元索引。其他一些常用的方法intcompareTo(Stringother):按照字典顺序如果字符串位于other之前返回一个负数如果字符串位于other之后返回一个正数如果两个字符串相等返回0IntStreamcodePoints():将这个字符串的码点作为一个流返回。调用toArray将它们放在一个数组中。newString(int[]codePoints,intoffset,intcount):用数组中从offset开始的count个码点构造一个字符串。booleanempty()boleanblank():如果字符串为空或者由空格组成返回true。booleanequals(Objectother):如果字符串和other相等返回true。booleanequalsIgnoreCase(Stringother):如果字符串与other相等(忽略大小写)返回true。booleanstartsWith(Stringprefix)booleanendsWith(Stringsuffix):如果字符串以prefix开头或以suffix或结尾则返回true。(PS:中文原版书籍中多了一个或字)intindexOf(Stringstr)intindexOf(Stringstr,intfromIndex):返回与字符串str或码点cp匹配的第一个子串的开始位置。从索引0或fromIndex开始匹配。如果在原始字符串中不存在str,则返回-1。intlastIndexOf(Stringstr)intlastIndexOf(Stringstr,intfromIndex)intlastIndexOf(Stringcp)intlastIndexOf(intcp)intlastIndexOf(intcp,intfromIndex):返回与字符串str或码点cp匹配的最后一个子串的开始位置。从原始字符串末尾或fromIndex开始匹配。intlength():返回字符串代码单元的个数。intcodePointCount(intstartIndex,intendIndex):返回startIndex和endIndex-1之间的码点个数。Stringreplace(CharSequenceoldString,CharSequencenewString):返回一个新字符串。这个字符串用newString代替原始字符串中所有的oldString。可以用String或StringBuilder对象作为CharSequence参数。Stringsubstring(intbeginIndex)Stringsubstring(intbeginIndex,intendIndex):返回一个新字符串。这个字符串包含原始字符串中从beginIndex到字符串末尾或endIndex-1的所有代码单元。StringtoLowerCase()StringtoUpperCase()返回一个新字符串。这个字符串将原始字符串中的大写字母改为小写字母或者将原始字符串中的所有小写字母改成大写字母。Stringtrim()Stringstrip():返回一个新字符串。这个字符串将删除原始字符串头部和尾部小于等于U0020的字符(trim)或空格(strip)。Stringjoin(CharSequencedelimiter,CharSequence...elements):返回一个新字符串用给定的定界符连接所有元素。Stringrepeat(intcount):返回一个字符串将当前字符串重复count次。注释在API注释中有一些CharSequence类型的参数。这是一种接口类型所有字符串都属于这个接口。欢迎点赞收藏转发。个人网站博客地址朗朗繁星的博客

相关新闻

3分钟掌握BlindWatermark:Java图像隐形水印终极指南

3分钟掌握BlindWatermark:Java图像隐形水印终极指南

2026/7/15 16:09:06

3分钟掌握BlindWatermark:Java图像隐形水印终极指南 【免费下载链接】BlindWatermark Java 盲水印 项目地址: https://gitcode.com/gh_mirrors/blin/BlindWatermark 你是否曾担心自己的原创图片被盗用却无法证明版权?或者需要在图片中嵌入秘密信息…

如何3步完成全网小说高效批量下载?终极指南来了!

如何3步完成全网小说高效批量下载?终极指南来了!

2026/7/15 16:09:06

如何3步完成全网小说高效批量下载?终极指南来了! 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 在数字阅读时代,你是否曾遇到过心爱的小说突然消…

sqlmap自动化漏洞利用(DVWA初、中、高)

sqlmap自动化漏洞利用(DVWA初、中、高)

2026/7/15 16:09:06

前两篇文章我们安装了kali,并在我们物理机中安装靶场DVWA,今天我们来看看如何用kali自带的工具sqlmap进行SQL注入漏洞利用。 一、环境配备 1.我们先在我们kali中打开DVWA,打开方式为http://[DVWA所在主机IP]/DVWA,例如DVWA所在主机…

Carte实战教程:如何组织和分类API调用方法

Carte实战教程:如何组织和分类API调用方法

2026/7/15 17:29:09

Carte实战教程:如何组织和分类API调用方法 【免费下载链接】carte Simple Jekyll-based documentation site for APIs. 项目地址: https://gitcode.com/gh_mirrors/ca/carte 在构建API文档时,如何有效地组织和分类API调用方法是一个关键挑战。Car…

Nof1-tracker 资金管理实战:总保证金模式 vs 固定金额分配模式

Nof1-tracker 资金管理实战:总保证金模式 vs 固定金额分配模式

2026/7/15 17:29:09

Nof1-tracker 资金管理实战:总保证金模式 vs 固定金额分配模式 【免费下载链接】nof1-tracker A command-line tool for tracking nof1.ai AI Agent trading signals and automatically executing Binance futures trades 项目地址: https://gitcode.com/gh_mirro…

改 Prompt 没用,你的 Agent 问题出在这六个地方

改 Prompt 没用,你的 Agent 问题出在这六个地方

2026/7/15 17:29:09

Agent 出了问题,大多数团队的第一反应是改 Prompt。 Fiddler 的生产数据直接打脸了这个直觉:Agent 失败时,人们本能去调提示词,但问题往往不在模型,而在 Harness。 Harness 是什么?就是模型外围的那一层运…

3分钟快速上手:用VMagicMirror打造你的专属虚拟形象

3分钟快速上手:用VMagicMirror打造你的专属虚拟形象

2026/7/15 17:29:09

3分钟快速上手:用VMagicMirror打造你的专属虚拟形象 【免费下载链接】VMagicMirror VRM Software for Windows to move avatar with minimal devices. 项目地址: https://gitcode.com/gh_mirrors/vm/VMagicMirror 想象一下这样的场景:你正在直播编…

RAG优化:评测集构建与核心指标一次讲清

RAG优化:评测集构建与核心指标一次讲清

2026/7/15 17:29:09

实际生产中真正可靠的 RAG 优化,需要回答四个问题: 正确资料有没有被检索到?检索到的资料是否真的有用?最终回答是否忠于资料并回应了问题?效果提升是否值得增加的延迟和成本? 没有固定评测集的 RAG 优化&…

3步解锁Mac光标魔法:Mousecape让你的鼠标指针焕然一新

3步解锁Mac光标魔法:Mousecape让你的鼠标指针焕然一新

2026/7/15 17:19:09

3步解锁Mac光标魔法:Mousecape让你的鼠标指针焕然一新 【免费下载链接】Mousecape Cursor Manager for OSX 项目地址: https://gitcode.com/gh_mirrors/mo/Mousecape 厌倦了Mac系统千篇一律的白色箭头光标?想要为日常操作增添个性和趣味&#xff…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/14 10:03:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/15 0:26:43

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

【LINUX】驱动

【LINUX】驱动

2026/7/15 0:08:14

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…