Java字符串操作利器:StringBuffer与StringBuilder类详解

在处理字符串变更时,StringBuffer和StringBuilder类是优选工具。与String类不同,StringBuffer和StringBuilder允许对象被多次修改,而不会生成新的未使用对象。

StringBuilder类自Java 5起引入,其与StringBuffer的主要区别在于StringBuilder的方法不提供线程安全保障(线程安全意味着在多线程环境下,通过加锁机制保护数据访问,确保当一个线程正在访问数据时,其他线程不能进行访问,以保持数据一致性和防止污染。相对地,线程不安全则意味着缺乏这种保护,可能导致多线程环境下数据被不一致地修改)。

由于StringBuilder在性能上优于StringBuffer,因此在大多数情况下推荐使用StringBuilder。但如果应用需要线程安全,则必须选择StringBuffer。

以下是一个示例代码:

public class Test {
    public static void main(String args[]) {
        StringBuffer sBuffer = new StringBuffer("test");
        sBuffer.append(" String Buffer");
        System.out.println(sBuffer);
    }
}

运行上述代码,输出结果将是:

test String Buffer

以下是 StringBuffer 类支持的主要方法:

序号方法描述
1public StringBuffer append(String s) <br> 将指定的字符串追加到当前字符序列。
2public StringBuffer reverse() <br> 将当前字符序列反转。
3public StringBuffer delete(int start, int end) <br> 删除从 startend-1 范围内的子字符串。
4public StringBuffer insert(int offset, int i) <br> 在指定位置插入整数 i 的字符串表示形式。
5public StringBuffer replace(int start, int end, String str) <br> 使用给定的字符串 str 替换从 startend-1 范围内的子字符串。

以下方法与 String 类的方法类似: 

序号方法描述
1int capacity() <br> 返回当前容量。
2char charAt(int index) <br> 返回指定索引处的字符。
3void ensureCapacity(int minimumCapacity) <br> 确保容量至少等于指定的最小值。
4void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) <br> 将字符从此序列复制到目标字符数组 dst
5int indexOf(String str) <br> 返回指定子字符串第一次出现的索引。
6int indexOf(String str, int fromIndex) <br> 从指定索引开始,返回指定子字符串第一次出现的索引。
7int lastIndexOf(String str) <br> 返回指定子字符串最后一次出现的索引。
8int lastIndexOf(String str, int fromIndex) <br> 从指定索引开始,返回指定子字符串最后一次出现的索引。
9int length() <br> 返回字符序列的长度(字符数)。
10void setCharAt(int index, char ch) <br> 将指定索引处的字符设置为 ch
11void setLength(int newLength) <br> 设置字符序列的长度。
12CharSequence subSequence(int start, int end) <br> 返回一个新的字符序列,该序列是此序列的子序列。
13String substring(int start) <br> 返回一个新的字符串,包含从 start 开始的子序列。
14String substring(int start, int end) <br> 返回一个新的字符串,包含从 startend-1 的子序列。
15String toString() <br> 返回此字符序列的字符串表示形式。

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

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

相关文章

软件确认测试报告的内容和作用简析

软件确认测试报告是对软件确认测试过程及结果的正式记录&#xff0c;是评估软件质量的重要依据。它不仅对开发团队起到反馈作用&#xff0c;更是决策层判断软件是否可以交付的重要参考。 一、软件确认测试报告包括的内容   1、测试目的&#xff1a;明确此次测试的目的和所要…

结构体(初阶)

结构体&#xff1a; 结构体类型的声明 结构体初始化 结构成员访问 结构体传参 1.结构体的声明 1.1结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2结构的声明 struct tag { member - list; }variable-lis…

详解VHDL如何编写Testbench

1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型&#xff0c;它为所测试的元件提供了激励信号&#xff0c;可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中&#xff0c;也可以从…

React 第二十节 useRef 用途使用技巧注意事项详解

简述 useRef 用于操作不需要在视图上渲染的属性数据&#xff0c;用于访问真实的DOM节点&#xff0c;或者React组件的实例对象&#xff0c;允许直接操作DOM元素或者是组件&#xff1b; 写法 const inpRef useRef(params)参数&#xff1a; useRef(params)&#xff0c;接收的 …

SQL子查询和having实例

有2个表如下&#xff1b;一个是站点信息&#xff0c;一个是站点不同时间的访问量&#xff0c; 现在要获取总访问量大于200的网站&#xff1b; 先执行如下sql&#xff0c;不包括having子句看一下&#xff0c;获得的是所有站点的总访问量&#xff1b; 这应是一个子查询&#xf…

【seatunnel】数据同步软件安装

【seatunnel】数据同步软件安装 下载 wget https://dlcdn.apache.org/seatunnel/2.3.8/apache-seatunnel-2.3.8-bin.tar.gz wget https://dlcdn.apache.org/seatunnel/seatunnel-web/1.0.2/apache-seatunnel-web-1.0.2-bin.tar.gz1、安装seatunnel Server 解压 tar zxvf ap…

散斑/横向剪切/迈克尔逊/干涉条纹仿真技术分析

摘要 本博文提供了多种数据类型的干涉条纹仿真&#xff0c;并展示了它们对应的散斑干涉条纹。还分别给出了横向剪切干涉以及剪切散斑干涉条纹的仿真。 一、迈克尔逊干涉与散斑干涉仿真 下图为干涉条纹与对应的散斑干涉条纹的仿真示意图。其中&#xff0c;干涉条纹可认为是源…

如何通过采购管理系统实现智能化采购?

随着人工智能、大数据等技术的快速发展&#xff0c;采购管理逐步迈入智能化时代。智能化采购不仅提升了效率&#xff0c;还为企业提供了更精准的采购决策支持。本文将从智能化采购的优势出发&#xff0c;探讨采购管理系统如何助力企业实现这一目标。 文中用到的采购管理系统&a…

【论文阅读笔记】IC-Light

SCALING IN-THE-WILD TRAINING FOR DIFFUSION-BASED ILLUMINATION HARMONIZATION AND EDITING BY IMPOSING CONSISTENT LIGHT TRANSPORT 通过施加一致的光线传输来扩展基于扩散模型的真实场景光照协调与编辑训练 前言摘要引言相关工作基于学习的基于扩散模型的外观和光照操纵光…

594: Maximum Tape Utilization Ratio

解法&#xff1a; 对于该题有以下错误&#xff08;敬希评论区指正 1.dp定义在全局会wa struct node {int count; // 当前容量下能够存储的程序数量int sum; // 当前容量下所占用的磁带长度vector<int> path; // 当前容量下选择的程序的路径&#xff08;存放的程序…

流量主微信小程序工具类去水印

工具类微信小程序流量主带后台管理&#xff0c;可开通广告&#xff0c;带自有后台管理&#xff0c;不借助第三方接口 介绍 支持抖音&#xff0c;小红书&#xff0c;哔哩哔哩视频水印去除&#xff0c;功能实现不借助第三方平台。可实现微信小程序流量主广告变现功能&#xff0c…

04软件测试需求分析案例-用户登录

通读文档&#xff0c;提取信息&#xff0c;提出问题&#xff0c;整理为需求。 从需求规格说明、设计说明、配置说明等文档获取原始需求&#xff0c;通读原始需求&#xff0c;分析有哪些功能&#xff0c;每种功能要完成什么业务&#xff0c;业务该如何实现&#xff0c;业务逻辑…

DX12 快速教程(2) —— 渲染天蓝色窗口

快速导航 新建项目 "002-DrawSkyblueWindow"DirectX 12 入门1. COM 技术&#xff1a;DirectX 的中流砥柱什么是 COM 技术COM 智能指针 2.创建 D3D12 调试层设备&#xff1a;CreateDebugDevice什么是调试层如何创建并使用调试层 3.创建 D3D12 设备&#xff1a;CreateD…

《计算机组成及汇编语言原理》阅读笔记:p116-p120

《计算机组成及汇编语言原理》学习第 7 天&#xff0c;p116-p120 总结&#xff0c;总计 5 页。 一、技术总结 1.CPU优化 (1)increase overall performance number 例如&#xff1a;16位电脑提升到32位电脑。 (2)multiprocessing One way to make computers more useful i…

【蓝桥杯每日一题】12.18

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x 从今天开始&#xff0c;笨狐狸&#xff0c;啊呸&#xff0c;本狐狸要开始漫长的蓝桥杯备战啦&#xff0c;将会长期更新每日一题这个专栏&#xff0c;直到蓝桥杯结束&#xff0c;各位一起…

Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印

图样&#xff1a; 就可以导入了 上代码 import tkinter as tk from tkinter import ttk import sqlite3 from datetime import datetime from tkinter import messagebox, filedialog import pandas as pd import reclass OrderSystem:def __init__(self, root):self.root r…

【机器学习案列】车牌自动识别系统:基于YOLO11的高效实现

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

SpringBoot(二)—— yaml配置文件

接上篇&#xff0c;我们对SpringBoot有了基本的了解&#xff0c;接下来探究配置文件。 目录 二、配置文件 1. SpringBoot热部署 2. 配置文件 2.1 配置文件的作用 2.2 YAML 配置文件 2.3 YAML 与 XML 比较 3. YAML语法 3.1 键值对 3.2 值的写法 3.3 对象/Map&#x…

NFV架构

通信&#xff08;CT&#xff09;的NFV技术是借鉴了IT行业的云计算概念&#xff0c;实际大规模应用在4G时代。 区别是增加了以下几点 1、NFVI是openstack的电信增强版本&#xff0c;除了nova cinder nuetru等增加了电信专用组件。 2、设计增加了mano&#xff0c;包括了VIM、NFVO…

关于Edge浏览器的设置

这里记录几条个人比较习惯的使用浏览器方式的设置&#xff0c;主要是edge浏览器 1. 黑背景色 修改整个浏览器的背景色为黑色&#xff0c;而不是主题&#xff0c;只有边框颜色改变地址栏输入edge://flags/#enable-force-dark&#xff0c;将Default 改为 Enabled&#xff1b;如…