当前位置: 首页 > news >正文

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

相关文章:

StringBuilder类常用方法(Java)

StringBuilder类常用方法 StringBuilder 是 Java 中常用的字符串缓冲区类,适用于频繁修改字符串的场景。 1. append(): 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾。 StringBuilder sb new StringBuilder("Hello"); sb.…...

Iceberg从入门到精通系列之二十一:Spark集成Iceberg

Iceberg从入门到精通系列之二十一:Spark集成Iceberg 一、在 Spark 3 中使用 Iceberg二、添加目录三、创建表四、写五、读六、Catalogs七、目录配置八、使用目录九、替换会话目录十、使用目录特定的 Hadoop 配置值十一、加载自定义目录十二、SQL 扩展十三、运行时配置…...

Linux的进程信号

注意:首先需要提醒一个事情,本节提及的进程信号和下节的信号量没有任何关系,请您区分对待。 1.信号概念 1.1.生活中的信号 我们在生活中通过体验现实,记忆了一些信号和对应的处理动作,这意味着信号有以下相关的特点&…...

svn常用命令及过滤文件 global ignore pattern

SVN常用命令详解和global ignore pattern Subversion(SVN)是一个版本控制系统,广泛用于软件开发项目中。它能够追踪文件的变更,并且允许多人在同一个项目中协同工作。以下是一些常用的SVN命令及其用法。 1. 检出代码 要从SVN服…...

【QT+QGIS跨平台编译】之二十九:【HDF5+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、HDF5介绍二、文件下载三、文件分析四、pro文件一、HDF5介绍 HDF5(层次数据格式第5版)是一种用于存储和组织大量数据的文件格式和技术集合。它由美国国家超级计算应用中心(NCSA)开发,旨在解决复杂数据的存储和分布问题。HDF5支持各种数据类型,能够有效地存储…...

React 中实现拖拽功能-插件 react-beautiful-dnd

拖拽功能在平时开发中是很常见的,这篇文章主要使用react-beautiful-dnd插件实现此功能。 非常好用,附上GitHub地址:https://github.com/atlassian/react-beautiful-dnd 安装及引入 // 1.引入 # yarn yarn add react-beautiful-dnd# npm npm…...

golang 引入swagger(iris、gin)

golang 引入swagger(iris、gin) 在开发过程中,我们不免需要调试我们的接口,但是有些接口测试工具无法根据我们的接口变化而动态变化。文档和代码是分离的。总是出现文档和代码不同步的情况。这个时候就可以在我们项目中引入swagge…...

Java开发IntelliJ IDEA2023

IntelliJ IDEA 2023是一款强大的集成开发环境(IDE),专为Java开发人员设计。它提供了许多特色功能,帮助开发人员更高效地编写、测试和调试Java应用程序。以下是一些IntelliJ IDEA 2023的特色功能: 智能代码编辑器&…...

LeetCode LCP 30.魔塔游戏:贪心(优先队列)

【LetMeFly】LCP 30.魔塔游戏:贪心(优先队列) 力扣题目链接:https://leetcode.cn/problems/p0NxJO/ 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1。每个房间的补血道具/怪物对于血量影响记于…...

Oracle的权限

通过用户登录plsql工具后,如果在创建视图(或其他对象)时,没有指明视图或对象的用户,该视图或对象将直接创建在当前登录用户下。 GRANT SELECT ON user2.table1 TO user1;//将用户2的表1的select权限给用户1 GRANT ALL ON user2.table1 TO u…...

20240206三次握手四次挥手

TCP和UDP异同点 相同点:同属于传输层的协议 不同点: TCP ----> 稳定 1> 提供面向连接的,可靠的数据传输服务 2> 传输过程中,数据无误、数据无丢失、数据无失序、数据无重复 1、TCP会给每个数据包编上编号&#xff…...

Navicat的使用教程,操作详解

这篇文章主要针对mysql数据库。 在使用Navicat之前,首先要确保你在本地已经安装好了,mysql数据库,安装教程可以参考我的另一篇博文 在windows平台上mysql的安装教程-CSDN博客 1.Navicat连接你的数据库 连接名,随便写&#xff0c…...

Git―基本操作

Git ⛅认识 Git⛅安装 GitCentos(7.6)Ubuntu ⛅Git―基本操作创建本地仓库🍂配置本地仓库🍂工作区, 暂存区, 版本库🍂版本库工作区 添加文件🍂查看文件🍂修改文件🍂版本回退🍂☃️案例 撤销修改…...

【PostgreSQL内核学习(二十六) —— (共享数据缓冲区)】

共享数据缓冲区 概述共享数据缓冲区管理共享缓冲区管理的核心功能包括: 共享数据缓冲区的组织结构初始化共享缓冲池BufferDesc 结构体InitBufferPool 函数 如何确定请求的数据页面是否在缓冲区中?BufferTag 结构体RelFileNode 结构体ForkNumber 结构体Re…...

word调整论文格式的记录

页眉的分章显示内容 效果: 步骤: 确保“显示/隐藏的标记”符号打开点亮 前提是章节前面有“分节符(下一页)”,没有则添加,在菜单栏“布局”——》“下一页” 添加页眉,双击页眉,选…...

android.MediaMuxer时间裁剪

使用MediaMuxer裁剪视频_安卓muxer 裁剪视频画布-CSDN博客 关键步骤 mediaExtractor.seekTo(beginTime, MediaExtractor.SEEK_TO_PREVIOUS_SYNC);long presentTimeUs mediaExtractor.getSampleTime(); if (presentTimeUs > endTime)break; 功能代码 VideoView videoVie…...

【蓝桥杯选拔赛真题91】Scratch筛选数据 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch筛选数据 一、题目要求 编程实现 二、案例分析 1、角色分析...

英语学习——16组英语常用短语

第1组:look look at 看 look for 寻找 look up 查阅,向上看 look out 向外看,小心 look after 照顾 look like 看起来像 look through 浏览 look into 向里看 look around 环顾四周 look forward to 期盼 look ahead 向前看 Look…...

unity 增加系统时间显示、FPS帧率、ms延迟

代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;using UnityEngine;public class Frame : MonoBehaviour {// 记录帧数private int _frame;// 上一次计算帧率的时间private float _lastTime;// 平…...

【Python基础】文件详解(文件基础、csv文件、时间处理、目录处理、excel文件、jsonpicke、ini配置文件)

文章目录 (一)文件详解1 快速入门文件操作1.1 快速实现文件读取1.2 快速实现文件写入 2 文件打开方式详解2.1 open方法2.2 打开方式2.3 文件读写操作2.3.1 基本读写2.3.2 读写方式打开2.3.3 实现重复读取 3 文件编码问题4 文件读写方法4.1 文件读取方式4…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

简单介绍C++中 string与wstring

在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位&#xff09…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录

#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...

无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技

无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...

第22节 Node.js JXcore 打包

Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...

PostgreSQL 与 SQL 基础:为 Fast API 打下数据基础

在构建任何动态、数据驱动的Web API时,一个稳定高效的数据存储方案是不可或缺的。对于使用Python FastAPI的开发者来说,深入理解关系型数据库的工作原理、掌握SQL这门与数据库“对话”的语言,以及学会如何在Python中操作数据库,是…...