StringBuilder类常用方法(Java)

StringBuilder类常用方法


StringBuilder 是 Java 中常用的字符串缓冲区类,适用于频繁修改字符串的场景。

1. append(): 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // sb 变为 "Hello World"

重载方法:

sb.append(true); // 将布尔值追加到字符串缓冲区
sb.append(123); // 将整数追加到字符串缓冲区

2. insert():在指定位置插入指定字符串、字符、布尔值或其他数据类型的表示。

Tips:insert(i)是插在插入位置之前!

StringBuilder sb = new StringBuilder("Hello");
sb.insert(5, " World"); // sb 变为 "Hello World"

重载方法:

sb.insert(0, true); // 在指定位置插入布尔值
sb.insert(6, 123); // 在指定位置插入整数

3. replace():用新的字符串替换指定范围内的字符序列。

不包含结束位置下标。

StringBuilder sb = new StringBuilder("Hello World");
sb.replace(6, 11, "Java"); // sb 变为 "Hello Java"

4. delete():删除指定范围内的字符序列。

不包含结束位置下标。

StringBuilder sb = new StringBuilder("Hello World");
sb.delete(6, 11); // sb 变为 "Hello"

5. deleteCharAt():删除指定索引处的字符。

StringBuilder sb = new StringBuilder("Hello");
sb.deleteCharAt(1); // sb 变为 "Hllo"

6. reverse(): 反转字符串缓冲区中的字符序列。

StringBuilder sb = new StringBuilder("Hello");
sb.reverse(); // sb 变为 "olleH"

7. charAt():获取指定索引处的字符。

StringBuilder sb = new StringBuilder("Hello");
char c = sb.charAt(1); // c 的值为 'e'

8. setCharAt():将指定索引处的字符替换为新的字符。

StringBuilder sb = new StringBuilder("Hello");
sb.setCharAt(1, 'a'); // sb 变为 "Hallo"

9. substring():返回一个新的字符串,其中包含字符串缓冲区中指定范围内的字符。

不包含结束位置下标。

StringBuilder sb = new StringBuilder("Hello World");
String sub = sb.substring(6, 11); // sub 的值为 "World"

10. indexOf():返回指定子字符串第一次出现的索引。

StringBuilder sb = new StringBuilder("Hello World");
int index = sb.indexOf("World"); // index 的值为 6

11. lastIndexOf():返回指定子字符串最后一次出现的索引。

StringBuilder sb = new StringBuilder("Hello World Hello");
int lastIndex = sb.lastIndexOf("Hello"); // lastIndex 的值为 12

12. length():返回字符串缓冲区中的字符数。

StringBuilder sb = new StringBuilder("Hello");
int len = sb.length(); // len 的值为 5

13. capacity():返回当前容量,即可以存储的字符数。

StringBuilder sb = new StringBuilder(20);
int cap = sb.capacity(); // cap 的值为 20

14. ensureCapacity(): 确保容量至少等于指定的最小值。

StringBuilder sb = new StringBuilder();
sb.ensureCapacity(20); // 确保容量至少为 20

15. trimToSize():调整容量以适应字符串的当前大小。

StringBuilder sb = new StringBuilder("Hello");
sb.trimToSize(); // 调整容量以适应字符串的当前大小

16. toString():将字符串缓冲区中的字符序列转换为字符串。

StringBuilder sb = new StringBuilder("Hello");
String str = sb.toString(); // str 的值为 "Hello"

17. setLength():用于设置当前串的长度。

如果新长度小于当前长度,那么超出部分的字符将会被丢弃;如果新长度大于当前长度,那么超出部分的字符将会以 null 字符填充。

以下是 setLength() 方法的示例:

StringBuilder sb = new StringBuilder("Hello World");
sb.setLength(5); // sb 变为 "Hello"

在这个示例中,setLength() 方法将 StringBuilder 对象 sb 的长度设置为 5,因此多余的字符 " World" 就被丢弃了。

setLength() 方法还有一个重载版本,它接受一个 int 类型的参数和一个 char 类型的参数,用来设置新长度和填充字符。如果新长度小于当前长度,那么超出部分的字符将会被丢弃;如果新长度大于当前长度,那么超出部分的字符将会以指定的填充字符填充。

以下是 setLength() 方法的重载示例:

StringBuilder sb = new StringBuilder("Hello");
sb.setLength(7, '!'); // sb 变为 "Hello!!!"

在这个示例中,setLength() 方法将 StringBuilder 对象 sb 的长度设置为 7,并在超出部分使用 ‘!’ 填充。因此,sb 的值变为 “Hello!!!”。

18. equals():用于比较两个 StringBuilder 对象的内容是否相等。

实际上比较的是对象的引用是否相等,而不是对象内容是否相等!

下面是 equals() 方法的示例:

StringBuilder sb1 = new StringBuilder("Hello");
StringBuilder sb2 = new StringBuilder("Hello");

boolean result = sb1.equals(sb2); // result 的值为 false
//尽管 sb1 和 sb2 中的内容相同,但由于它们是不同的对象,所以 equals() 方法返回的结果是 false。

这里需要注意的是,StringBuilder 类中的 equals() 方法并没有重写 Object 类中的 equals() 方法,而是沿用了 Object 类中的 equals() 方法。
在这里插入图片描述

实际上比较的是对象的引用是否相等,而不是对象内容是否相等。

如果需要比较两个 StringBuilder 对象的内容是否相等,可以先将其转换为 String 类型,然后使用 String 类的 equals() 方法进行比较,或者直接使用 toString() 方法将其转换为 String 类型再进行比较。

请注意,StringBuilder 类中没有重载的 equals() 方法来直接比较内容,因此在比较两个 StringBuilder 对象的内容时,需要转换为 String 或使用其他方法来实现内容比较。


19.isEmpty():用于检查 StringBuilder 对象是否为空。

StringBuilder sb = new StringBuilder();
boolean isEmpty = sb.isEmpty(); // 判断 StringBuilder 对象是否为空

if (isEmpty) {
    System.out.println("StringBuilder 对象为空");
} else {
    System.out.println("StringBuilder 对象不为空");
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《数电》理论笔记-第2章-组合逻辑电路

一,集成门电路 1TTL门电路 TTL门电路中双极型三极管构成,它的特点是速度快、抗静电能力强集成度低、功耗大, 目前广泛应用于中、小规模集成电路中。 TTL门电路有 74 (商用) 和 54 (军用) 两大系列,每个系列中又有若干子系列。 2 CMOS门电路 …

雨云EPYC7702服务器上线了!适合幻兽帕鲁开服的VPS!雨云EPYC7702高防VPS性能测评

雨云游戏云上线了AMD EPYC 7702的VPS服务器,中等水平的单核性能,适合开幻兽帕鲁和我的世界1.17以下版本的服务器。 AMD Epyc 7702是一款64核心128线程,基础频率2.00 GHz加速频率高达3.35 GHz处理器,凭借着7 nm工艺及新一代Rome (…

CopyOnWriteArrayList底层原理全面解析【建议收藏】

简介 CopyOnWriteArrayList是Java中的一个线程安全的集合类,是ArrayList线程安全版本,主要通过Copy-On-Write(写时复制,简称COW)机制来保证线程安全。 Copy-On-Write机制核心思想:向一个数组中添加数据时…

Android中的MVVM

演变 开发常用的框架包括MVC、MVP和本文的MVVM,三种框架都是为了分离ui界面和处理逻辑而出现的框架模式。mvp、mvvm都由mvc演化而来,他们不属于某种语言的框架,当存在ui页面和逻辑代码时,我们就可以使用这三种模式。 model和vie…

1、卷积分类器

用 Kera 创建你的第一个计算机视觉模型。 数据集下载地址:链接:https://pan.quark.cn/s/f9a1428cf6e3 提取码:XJcv 文章目录 欢迎来到计算机视觉!简介卷积分类器训练分类器示例 - 训练一个卷积分类器步骤1 - 加载数据步骤2 - 定义预训练基步骤3 - 附加头步骤4 - 训练结论欢…

pycharm像jupyter一样在控制台查看后台变量

更新下:这个一劳永逸不用一个一个改 https://blog.csdn.net/Onlyone_1314/article/details/109347481 右上角运行

1Panel面板如何安装并结合内网穿透实现远程访问本地管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

牛客网SQL:查询每个日期新用户的次日留存率

官网链接: 牛客每个人最近的登录日期(五)_牛客题霸_牛客网牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。 有一个登录(login。题目来自【牛客题霸】https://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8?tpId82 …

HCIA-HarmonyOS设备开发认证V2.0-3.轻量系统内核基础

目录 一、前言二、LiteOS-M系统概述三、内核框架3.1、CMSIS 和 POSIX 整体架构3.2、LiteOS-M内核启动流程 四、内核基础4.1、任务管理4.2、时间管理(待续)4.3、中断管理(待续)4.4、软件定时器(待续) 五、内存管理5.1、静态内存(待续)5.2、动态内存(待续) 六、内核通信机制6.1、…

Springboot项目报文加密(AES、RSA、Filter动态加密)

Springboot项目报文加密(AES、RSA、Filter动态加密) 一、痛点1.1、初版报文加密二、前期准备2.1、AES加密2.2、RSA加密2.3、国密算法概述2.4、国密SM22.5、国密SM32.6、国密SM42.7、JAVA中的拦截器、过滤器2.8、请求过滤器2.9、响应过滤器2.10、登录验证码2.11、BCrypt非对称…

RobotFramework报错都是因为什么

1、参数问题FAILKeyword common. Bpm Ui Query Delete Data expected 44 arguments,got 3. 这种报错的意思是,应该有4个参数,实际只展示了3个参数 找对应的解决方案一 可能是入参的时候数量不一致 解决方案二: 对应的参数中间有空格 …

语义分割系列之FCN、DeeplabV1、V2、V3、V3Plus论文学习

FCN Fully Convolutional Networks 论文:Fully Convolutional Networks for Semantic Segmentation 地址:https://openaccess.thecvf.com/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf 特点:用全卷积替代了全连接、…

由繁化简 Q-Automation助力自动化测试管理

Q-Automation是基于ATX的自动化测试管理软件,用于测试电子控制单元(ECU)。该软件支持诊断协议层测试和诊断功能测试,且只需填写Excel表格,即可实现半自动化测试需求,从而缩短用户的测试周期。此外&#xff…

【教学类-47-01】UIBOT+IDM下载儿童古诗+修改文件名

背景需求: 去年12月,我去了其他幼儿园参观,这是一个传统文化德育教育特色的学校,在“古典集市”展示活动中,小班中班大班孩子共同现场念诵《元日》《静夜思》包含了演唱版本和儿歌念诵版本。 我马上也要当班主任了&a…

国产航顺HK32F030M: 超声波测距模块串口通信数据接收与处理

参考代码 /************************************************************************************************** * file usart_async_tx_no_int_rx_rxneint.c * brief 异步串口通信例程, 通过查询TXE标志发送数据,通过RXNE中断接收数据,当中断接收到数据后会将 * …

《合成孔径雷达成像算法与实现》Figure6.8

clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; % 距离过采样率 Nrg 320; % 距离线采样数 距离向…

【C++二维前缀和】黑格覆盖

题目描述 在一张由 M * N 个小正方形格子组成的矩形纸张上,有 k 个格子被涂成了黑色。给你一张由 m * n 个同样小正方形组成的矩形卡片,请问该卡片最多能一次性覆盖多少个黑格子? 输入 输入共 k1 行: 第 1 行为 5 个整数 M、N、…

政安晨:演绎在KerasCV中使用Stable Diffusion进行高性能图像生成

小伙伴们好,咱们今天演绎一个使用KerasCV的StableDiffusion模型生成新的图像的示例。 考虑计算机性能的因素,这次咱们在Colab上进行,Colab您可以理解为在线版的Jupyter Notebook,还不熟悉Jupyter的的小伙伴可以去看一下我以前的文…

web前后端小坑记录

游戏服务器过年这段时间忙完了,好久没看web了,重温一下。发现竟然没有文章记录这些修BUG的过程,记录一下。 目录 如何处理F5刷新? 如何处理F5刷新? 后端应该发现路由不存在,直接返回打包好的index.html就…

软件22-上午题-树与二叉树1

一、树 树形结构,非线性结构。 树是n个节点的有限集合。 树的定义是递归的。 1-1、树的基本概念 1、结点的度:一个结点的子树个数。 2、树的度:树中最大的结点的度数。 3、叶子结点:度为0的结点。 4、分支结点:度…