StringBuilder类常用方法(Java)

news2024/9/21 12:38:33

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 对象不为空");
}

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

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

相关文章

9.0 Zookeeper 节点特性

本章节介绍一下 zookeeper 的节点特性和简单使用场景,正是由于这些节点特性的存在使 zookeeper 开发出不同的场景应用。 1、同一级节点 key 名称是唯一的 实例: $ ls / $ create /runoob 2 已存在 /runoob 节点,再次创建会提示已经存在。 …

SDWAN组网一般会需要哪些设备

随着企业网络需求的不断增长和变化, SD-WAN作为一种先进的网络架构技术,需要一系列设备来构建有效的组网。以下是SD-WAN组网所需的一些关键设备清单: (1)SD-WAN路youqi: SD-WAN路youqi是SD-WAN网络的核心设…

【Spring Boot】第一篇 创建简单的Spring Boot项目

导航 一. 简介二. 创建简单的Spring Boot项目1. 工具选择和版本确定2. 创建步骤 三. 部署项目四. 测试验证 一. 简介 Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的创建和配置过程,同时提供了很多开箱即用的功能&am…

Python轴承故障诊断入门教学

目录 往期精彩内容: 1 工作室实验平台介绍 2 轴承故障诊断教程—数据集 3 轴承故障诊断教程—算法模型 3.1 振动分析方法 3.2 频域特征提取 3.3 时域特征提取 3.4 模型基础的机器学习方法 3.5 深度学习方法 3.6 时频域融合方法 3.7 信号重构方法 3.8 基…

定制红酒:如何根据客户的口味偏好进行定制

在红酒定制服务中,了解并满足客户的口味偏好是至关重要的。云仓酒庄洒派深知这一点,并根据客户的口味偏好进行红酒的定制。以下是云仓酒庄洒派如何根据客户的口味偏好进行定制的详细步骤: 1. 深入了解客户的口味偏好 在定制服务开始之前&…

VS2017+Qt中文无法编译通过newline in constant解决办法

首先说我的解决办法 Tools->Extensions and Updates… 安装ForceUTF8(with BOM) 注意Force这个插件有好几个版本,一定要withBOM!!!我之前安装的没有BOM导致改了各种设置还是一直编译不过,差点没气死我 另外代码里…

7.electron之渲染线程发送事件,主进程监听事件

如果可以实现记得点赞分享,谢谢老铁~ Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、…

深度学习图像分类相关概念简析+个人举例3(CNN相关补充,附详细举例代码1)

【1】激活函数(Activation Function):在深度学习(CNN)中,激活函数用于引入非线性性质,帮助模型学习复杂的关系。常见的激活函数有ReLU、Sigmoid和Tanh等。 (1)ReLU激活函…

微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)-2.0.1

客户端注册临时实例,GRPC处理 客户端服务发现 及订阅处理

无人机在化工消防救援中的应用,消防无人机应用场景分析

火灾对社会环境具有较大影响,因此需要重视消防灭火救援工作,注重现代化技术的运用,将无人机应用到救援过程并保障其应用质量。无人机是一项重要技术,便于消防灭火救援操作,使救援过程灵活展开,排除不利影响…

Netty源码系列 之 EventLoop run()方法 源码

EventLoop[实现类为NioEventLoop,我们研究NioEventLoop即可] EventLoop是一个单线程的线程池 核心作用:处理执行IO操作(accept,read,write事件),普通任务,定时任务 EventLoop封装…

Linux C/C++ 原始套接字:打造链路层ping实现

在C/C中,我们可以使用socket函数来创建套接字。我们需要指定地址族为AF_PACKET,协议为htons(ETH_P_ALL)来捕获所有传入和传出的数据包。 可以使用sendto和recvfrom函数来发送和接收数据包。我们需要构建一个合法的链路层数据包,在数据包的头…

Android14音频进阶:MediaPlayerService如何启动AudioTrack 下篇(五十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

Swift Combine 发布者订阅者操作者 从入门到精通二

Combine 系列 Swift Combine 从入门到精通一 1. Combine核心概念 你只需要了解几个核心概念,就能使用好 Combine,但理解它们非常重要。 这些概念中的每一个都通过通用协议反映在框架中,以将概念转化为预期的功能。 这些核心概念是&#x…

ubuntu配置conda环境

博主最近新换了电脑,原本的笔记本便被打入了冷宫,后来想到这个电脑也不能浪费,因此想着把原本的电脑重装一下,博主装了个双系统,分别是window10与ubuntu,今天便拿ubuntu系统练下手。 首先安装nvidia驱动 …

【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)

什么是嵌入? OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于: Search 搜索(结果按与查询字符串的相关性排序)Clustering 聚类(文本字符串按相似性分组)Recommendations 推荐(推荐具有…

Android 11 访问 Android/data/或者getExternalCacheDir() 非root方式

前言: 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExt…

第5章——深度学习入门(鱼书)

第5章 误差反向传播法 上一章中,我们介绍了神经网络的学习,并通过数值微分计算了神经网络的权重参数的梯度(严格来说,是损失函数关于权重参数的梯度)。数值微分虽然简单,也容易实现,但缺点是计…

12.0 Zookeeper 数据同步流程

在 Zookeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性。 ZAB 协议分为两部分: 消息广播崩溃恢复 消息广播 Zookeeper 使用单一的主进程 Leader 来接收和处理客户端所有事务请求,并采用 ZAB 协议的原子广播协议,将事务请求…

Linux内核与驱动面试经典“小”问题集锦(4)

接前一篇文章:Linux内核与驱动面试经典“小”问题集锦(3) 问题5 问:Linux内核中内存分配都有哪些方式?它们之间的使用场景都是什么? 备注:这个问题是笔者近期参加蔚来面试时遇到的一个问题。这…