Java中的StringBuilder类

StringBuilder 是 Java 中的一个类,它用于可变字符串的构造或修改。当你需要在一个循环中多次修改一个字符串时,使用 StringBuilder 是非常有用的,因为它比使用 + 操作符连接字符串的效率要高得多。

StringBuilder 的主要特点如下:

  1. 可变长度StringBuilder 对象的长度可以根据需要动态增长或缩小。

  2. 线程不安全:与 StringBuffer 相比,StringBuilder 的方法不是线程安全的,因此在多线程环境中使用时需要小心。但在单线程环境中,StringBuilder 通常比 StringBuffer 有更好的性能。

常用方法

append(): 向字符串构建器追加内容。

insert(): 在指定位置插入字符串。

delete(): 删除指定位置的字符。

replace(): 替换指定位置的字符或子串。

length(): 返回当前字符串构建器的长度。

toString(): 将当前字符串构建器转换为 String 对象。

public class StringBuilderExample {  public static void main(String[] args) {  StringBuilder sb = new StringBuilder();  sb.append("Hello");  sb.append(" ");  sb.append("World");  System.out.println(sb.toString()); // 输出: Hello World  sb.insert(5, "Beautiful"); // 在索引5的位置插入"Beautiful"  System.out.println(sb.toString()); // 输出: Hello Beautiful World  sb.delete(0, 5); // 删除从索引0到索引5(不包括)的字符  System.out.println(sb.toString()); // 输出: Beautiful World  }  
}

 常用方法

除了之前提到的 append()insert()delete()replace()length(), 和 toString() 方法外,StringBuilder 还提供了其他一些有用的方法,如:

  • substring(int start, int end): 返回一个新的 String,包含此字符序列中从指定的 start 开始到指定的 end 结束的子序列。
  • reverse(): 反转此字符序列。
  • setCharAt(int index, char ch): 将此序列中指定位置的字符设置为 ch
  • charAt(int index): 返回此序列中指定位置的 char 值。
  • 注意:当遇到的问题有关逆序输出,可以转换一下思想,就是使用for循环的时候,i的初始化是从数组或者是字符串的最后一个,然后注意设置循环结束的条件,最重要的是不要忘记i--;而不是I++;  注意:当要逆序输出的是字符串类型,可以使用StringBuilder类,因为StringBuilder类有reverse方法,可以直接逆序,如:StringBuilder(s).reverse().toString();

但是string类型没有,因为string类型是不可变的,所以没有提供reverse方法。

StringBuilder类的reverse方法的使用:

String originalString = "hello";

StringBuilder reversedString = new StringBuilder(originalString).reverse();

System.out.println(reversedString.toString());

 使用场景

StringBuilder 主要用于需要频繁修改字符串的场景,如循环中拼接字符串、构建复杂的 SQL 语句等。对于不需要修改的字符串,或者字符串修改不频繁的情况,使用 String 类更为合适。

了解这些知识点可以帮助你更有效地使用 StringBuilder,并在处理字符串时提高性能和效率。

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

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

相关文章

yml文件解析

.yml 后缀的文件可以有多个application.yml # 项目相关配置 用于 RuoYiConfig.java ruoyi:# 名称name: RuoYi# 版本version: 3.8.5# 版权年份copyrightYear: 2023# 实例演示开关demoEnabled: true# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Lin…

C语言结构体,枚举,联合

系列文章目录 第一章 C语言基础知识 第二章 C语言控制语句 第三章 C语言函数详解 第四章 C语言数组详解 第五章 C语言操作符详解 第六章 C语言指针详解 第七章 C语言结构体详解 第八章 详解数据在内存中的存储 第九章 C语言指针进阶 文章目录 1. 结构体 1.1 声明结构…

kubebuilder(2)创建项目及初始化

一个demo项目来了解kubebuilder的项目结构 初始化项目 mkdir demo-operator cd demo-operator kubebuilder init --domain demo.com --repo demo.com/tutorial 这一步创建了 Go module 工程基本的模板文件,引入了必要的依赖 如果不用--repo参数,也可…

【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Push Button的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 按钮类控件 | Push Button的使用及说明 文章编号&#x…

mysql基础6——多表查询

外键 把分散在多个不同表里面的数据查询出来的操作,就是多表查询 把两个表连接:使用外键(foreign key)和连接(join) 外键在表创建的阶段定义也可以通过修改表定义,连接在查询字段把相同意义的字段连接起来 外键就是从表中用来引用主表中数…

C# 开源SDK 工业相机库 调用海康相机 大恒相机

C# MG.CamCtrl 工业相机库 介绍一、使用案例二、使用介绍1、工厂模式创建实例2、枚举设备,初始化3、启动相机4、取图5、注销相机 三、接口1、相机操作2、启动方式3、取图4、设置/获取参数 介绍 c# 相机库,含海康、大恒品牌2D相机的常用功能。 底层采用回…

ai扩写软件有哪些免费的?分享4款扩写好用的!

随着人工智能技术的飞速发展,AI扩写软件逐渐成为了内容创作者们的得力助手。它们能够迅速将简短的文案扩写成内容丰富、结构完整的文章,大大提高了创作效率。本文将为您盘点几款免费的AI扩写软件,助您在今日头条、百家号等自媒体平台上轻松打…

P8837 [传智杯 #3 决赛] 商店(贪心加双指针)

题目背景 思路解析:很经典的贪心问题,把物品按照从便宜到贵的顺序排好序,然后按照富贵程度排人,直接暴力会tle所以这里采用双指针. #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<string> using namesp…

quill富文本编辑器中文汉化和高度设置操作

quill文档&#xff1a;Installation - Quill Rich Text Editor quill仓库&#xff1a;GitHub - quilljs/quill: Quill is a modern WYSIWYG editor built for compatibility and extensibility. quill默认是英文的&#xff0c;并且高度也是只有一行&#xff0c;所以想自定义高…

C++——类和对象练习(日期类)

日期类 1. 构造函数和析构函数2. 拷贝构造和赋值运算符重载3. 运算符重载3.1 日期的比较3.2 日期加减天数3.3 日期减日期3.4 流插入和流提取 4. 取地址和const取地址重载5. 完整代码Date.hDate.c 对日期类进行一个完善&#xff0c;可以帮助我们理解六个默认成员函数&#xff0c…

软件行业中的蓝海领域有哪些?

一、什么是蓝海&#xff1f; 蓝海&#xff0c;指的是未知的市场空间。这个概念相对于“红海”而言&#xff0c;红海则是指已知的市场空间。 企业要启动和保持获利性增长&#xff0c;就必须超越产业竞争&#xff0c;开创全新市场&#xff0c;这其中包括两块&#xff1a;一块是…

【软件测试】Selenium实战技巧-多页面和Windows控件处理

01 多页面处理 做UI自动化的时候常常会遇到浏览器弹出新的Tab页&#xff0c;或者需要在多个网页服务之间来回取数据的情况。 比如在首页点击文章“Jmeter使用&#xff1f;”的链接&#xff0c;浏览器会弹出一个新的页面显示“Jmeter使用&#xff1f;”这篇文章的详情。此时如…

Python多线程与多进程编程

一、引言 随着计算机技术的飞速发展&#xff0c;程序运行的速度和效率成为了人们关注的焦点。为了提高程序的执行效率&#xff0c;多线程与多进程编程技术应运而生。Python作为一种通用编程语言&#xff0c;在支持多线程与多进程编程方面有着独特的优势。本文将详细探讨Python…

书生·浦语大模型实战营之 XTuner 微调 Llama 3 个人小助手认知

书生浦语大模型实战营之 XTuner 微调 Llama 3 个人小助手认知 Llama 3 近期重磅发布,发布了 8B 和 70B 参数量的模型,XTuner 团队对 Llama 3 微调进行了光速支持!!!开源同时社区中涌现了 Llama3-XTuner-CN 手把手教大家使用 XTuner 微调 Llama 3 模型。 XTuner:http://…

牛客NC238 加起来和为目标值的组合【中等 DFS C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/172e6420abf84c11840ed6b36a48f8cd 思路 本题是组合问题&#xff0c;相同元素不同排列仍然看作一个结果。 穷经所有的可能子集&#xff0c;若和等于target&#xff0c;加入最终结果集合。 给nums排序是为了方便…

计算机网络【CN】Ch4 网络层

总结 一台主机可以有多个IP地址&#xff0c;但是必须属于多个逻辑网络【不同的网络号】。 解决IP地址耗尽&#xff1a; IP地址结构&#xff1a; 划分子网&#xff1a;&#x1d43c;&#x1d443;地址<网络号>,<子网号>,<主机号> CIDR&#xff1a;IP地址{&…

智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法

智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法 目录 智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法效果一览基本介绍程序设计参考资料效果一览 基本介绍 Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法 融合自适应…

pycharm爬虫模块(scrapy)基础使用

今天学了个爬虫。在此记录 目录 一.通过scrapy在命令行创建爬虫项目 二.判断数据为静态还是动态 三.pycharm中的设置 三:爬虫主体 四.pipelines配置&#xff08;保存数据的&#xff09; 五.最终结果 一.通过scrapy在命令行创建爬虫项目 1.首先需要在cmd中进入到python文…

华为od机试真题——智能成绩表

题目描述 算法结果 3 3 math chinese english z3 71 81 91 l4 81 71 93 w5 21 91 95 math l4 81 71 93 245 z3 71 81 91 243 w5 21 91 95 207 算法详情 public class SmartScoreTable {public static void main(String[] args) {// 输入Scanner scanner new Scanner(Syste…

一款pdf工具

下载链接&#xff1a;点击跳转&#xff1b; 它是一个installer&#xff0c;下好它之后&#xff0c;把网断掉&#xff0c;然后双击它&#xff0c;他会默认安装在C盘&#xff0c;安装时&#xff0c;浏览器可能会有一个弹窗&#xff0c;直接关掉并进入任务管理器杀掉所有smallerp…