JavaStringBuffer与StringBuilder
StringBuffer、StringBuilder
文章目录
- StringBuffer、StringBuilder
- StringBuffer和StringBuilder的理解
- 可变性分析
- 对于String
- 对于StringBuilder
- 常用方法
- 执行效率对比
StringBuffer和StringBuilder的理解
String
不可变的字符序列
StringBuffer
可变的字符序列JDK1.0
声明,线程安全 , 效率低
StringBuilder
可变的字符序列JDK5.0
声明 ,线程不安全 ,效率高
可变性分析
对于String
String s1 = new String() ; //char[] value = new char[0];
String s2 = new STring("abc"); //char[] value = new char[3]{'a','b,'c'};
对于StringBuilder
char []value; //存储字符序列
int count; //实际存储的字符个数
StringBuilder sBuffer1 = new StringBuilder(); //char[] value = new char[16];
StringBuilder sBuffer2 = new StringBuilder("abc"); //char[] value = new char[16 + "abc".length];
sBuffer1.append("ab"); //value[0] = 'a'; value[1] = 'c';
sBuffer1.append("b"); //value[2] = 'b';
//最多修改16个
//一旦count超过value.length时,就需要扩容
//默认扩容为原有容量的2倍 + 2 。 并将原有的value数组中的元素复制到新的数组中
-
如果开发中,需要频繁的针对于字符串进行 增删改 等操作 ,建议使用
StringBuffer
StringBuilder
替换String
-
若不涉及线程安全问题,建议使用
StringBuffer
替换StringBuilder
-
若大体确定需要操作的字符的个数,建议使用
int capacity
的构造器,避免底层多次扩容操作,效率降低
常用方法
StringBuilder、StringBuffer的API是完全一致的,并且很多方法与String相同。
//常用API
(1)StringBuffer append(xx):提供了很多的append()方法,用于进行字符串追加的方式拼接
(2)StringBuffer delete(int start, int end):删除[start,end)之间字符
(3)StringBuffer deleteCharAt(int index):删除[index]位置字符
(4)StringBuffer replace(int start, int end, String str):替换[start,end)范围的字符序列为str
(5)void setCharAt(int index, char c):替换[index]位置字符
(6)char charAt(int index):查找指定index位置上的字符
(7)StringBuffer insert(int index, xx):在[index]位置插入xx
(8)int length():返回存储的字符数据的长度
(9)StringBuffer reverse():反转
//其他API
(1)int indexOf(String str):在当前字符序列中查询str的第一次出现下标
(2)int indexOf(String str, int fromIndex):在当前字符序列[fromIndex,最后]中查询str的第一次出现下标
(3)int lastIndexOf(String str):在当前字符序列中查询str的最后一次出现下标
(4)int lastIndexOf(String str, int fromIndex):在当前字符序列[fromIndex,最后]中查询str的最后一次出现下标
(5)String substring(int start):截取当前字符序列[start,最后]
(6)String substring(int start, int end):截取当前字符序列[start,end)
(7)String toString():返回此序列中数据的字符串表示形式
(8)void setLength(int newLength) :设置当前字符序列长度为newLength
-
StringBuffer append(xx)
public class StringBufferTest{public static void main(String []args){StringBuilder sBuilder = new StringBuilder();sBuilder.append("abc").append("def"); //方法链调用System.out.println(sBuilder); //abcdef} }
-
StringBuffer delete(int start, int end)
public class StringBufferTest{public static void main(String []args){StringBuilder stringBuilder = new StringBuilder("helloworld");System.out.println(stringBuilder.delete(5, stringBuilder.length())); //hello}}
-
StringBuffer deleteCharAt(int index)
public calss StringBufferTest{public static void main(String []args){StringBuilder stringBuilder = new StringBuilder("Java");System.out.println(stringBuilder.deleteCharAt(0)); //ava} }
-
StringBuffer replace(int start, int end, String str)
public class StringBufferTest{public static void main(String []args){StringBuilder stringBuilder = new StringBuilder("Java");System.out.println(stringBuilder.replace(0, stringBuilder.length(), "helloworld")); //helloworldSystem.out.println(stringBuilder); //helloworld} }
执行效率对比
效率排序
StringBuilder
>StringBuffer
>String
public class RuntimeTest{public static void main(String []args){long startTime = 0L;long endTime = 0L;String text = "";StringBuffer buffer = new StringBuffer("");StringBuilder builder = new StringBuilder("");startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {buffer.append(String.valueOf(i));}endTime = System.currentTimeMillis();System.out.println("StringBuffer运行时间" + (endTime - startTime));startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {builder.append(String.valueOf(i));}endTime = System.currentTimeMillis();System.out.println("StringBuilder运行时间" + (endTime - startTime));startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {text = text + i;}endTime = System.currentTimeMillis();System.out.println("String运行时间" + (endTime - startTime));}
}
//
//StringBuffer运行时间2
//StringBuilder运行时间1
//String运行时间274
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
JavaStringBuffer与StringBuilder
StringBuffer、StringBuilder 文章目录 StringBuffer、StringBuilderStringBuffer和StringBuilder的理解可变性分析对于String对于StringBuilder 常用方法执行效率对比 StringBuffer和StringBuilder的理解 String 不可变的字符序列 StringBuffer 可变的字符序列 JDK1.0声明&…...
![](https://img-blog.csdnimg.cn/img_convert/8b3363713a4894200e81e3247f4ed471.png)
云徙科技助力竹叶青实现用户精细化运营,拉动全渠道销售额增长
竹叶青茶以其别具一格的风味与深厚的历史底蕴,一直被誉为茶中瑰宝。历经千年的传承与创新,竹叶青不仅坚守着茶叶品质的极致追求,更在数字化的浪潮中,率先打破传统,以科技力量赋能品牌,成为茶行业的领军者。…...
![](https://img-blog.csdnimg.cn/img_convert/8a280b2c49faf70f8d573ad0cc08f179.jpeg)
深度揭秘:深度学习框架下的神经网络架构进化
深度学习框架下的神经网络架构经历了从基础到复杂的显著进化,这一进程不仅推动了人工智能领域的突破性进展,还极大地影响了诸多行业应用。本文旨在深入浅出地揭示这一进化历程,探讨关键架构的创新点及其对现实世界的影响。 引言:…...
![](https://img-blog.csdnimg.cn/f95ddae62a4e43a68295601c723f92fb.gif)
MySQL的DML语句
文章目录 ☃️概述☃️DML☃️添加数据☃️更新和删除数据☃️DML的重要性 ☃️概述 MySQL 通用语法分类 ● DDL: 数据定义语言,用来 定义数据库对象(数据库、表、字段) ● DML: 数据操作语言,用来对数据库表中的数据进行增删改 …...
![](https://www.ngui.cc/images/no-images.jpg)
Wireshark的基本用法以及注意事项
Wireshark 是一个流行的网络协议分析工具,可以捕获和分析网络数据包。以下是一些常见的 Wireshark 的用法: 安装和启动:首先需要下载和安装 Wireshark。安装完成后,可以通过启动 Wireshark 应用程序来打开它。 选择网络接口&…...
![](https://img-blog.csdnimg.cn/ac0dee5e61f742c9bbfbfa62eb223dac.jpg)
集团门户网站的设计
管理员账户功能包括:系统首页,个人中心,管理员管理,论坛管理,集团文化管理,基础数据管理,公告通知管理 前台账户功能包括:系统首页,个人中心,论坛࿰…...
![](https://img-blog.csdnimg.cn/img_convert/9f5b1b8a35ae6df4b86eed9c78911491.png)
Tomcat基础详解
第一篇:Tomcat基础篇 lecture:邓澎波 一、构建Tomcat源码环境 工欲善其事必先利其器,为了学好Tomcat源码,我们需要先在本地构建一个Tomcat的运行环境。 1.源码环境下载 源码有两种下载方式: 1.1 官网下载 https://…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python爬虫】爬取名人名言页面并进行简单的数据清洗(入门级)
目录 资源链接 一、网站选择 二、数据爬取要求 三、数据清洗要求 四、实现代码 1.数据采集 2.数据清洗 资源链接 下面有笔者所放的源码下载链接,读者可自行下载: 链接:https://pan.baidu.com/s/1YmTdlnbSJLvLrrx92zz6Qg 提取码&…...
![](https://img-blog.csdnimg.cn/direct/f49e6dc778a4460181cebb0afb978126.png)
Microsoft Visual C++ Redistributable 【安装包】【高速下载】
方法1、可以从官方下载,如下图 Visual C Redistributable for Visual Studio 2015 但是此链接只有一个版本 方法2 已经下载好并且已经整理好了2008--2022的所有版本点击下方链接即可高速下载 如果是win7-win8-win10-win11直接可以下载2015--2022版本,…...
![](https://img-blog.csdnimg.cn/direct/73fc19a7f9a846fb9c44cc26133af8fb.png)
MFC绘制哆啦A梦
文章目录 OnPaint绘制代码完整Visual Studio工程下载其他卡通人物绘制 OnPaint绘制代码 CPaintDC dc(this); // 用于绘画的设备上下文CRect rc;GetWindowRect(rc);int cxClient rc.Width();int cyClient rc.Height();// 辅助线HPEN hPen CreatePen(PS_DOT, 1, RGB(192, 192,…...
![](https://img-blog.csdnimg.cn/direct/40f0c097a220485b90f67e71e80ed0c8.jpeg)
网络编程(TCP协议,UDP协议)
目录 网络编程三要素 IP IPv4 InetAddress类 端口号 协议 UDP协议 UDP协议发送数据 UDP协议接收数据 UDP的三种通信方式(代码实现) TCP协议 TCP通信程序 三次握手和四次挥手 练习 1、客户端:多次发送数据服务器:接收多次接收数据,并打印 2、客户端…...
![](https://www.ngui.cc/images/no-images.jpg)
读取Jar包下文件资源的问题及解决方案
问题 项目A代码调用到Resouces下的文件a.sh,打包成Jar包后,项目B调用对应方法时,出现报错,找不到a.sh文件路径,原来的代码可能是: URL resource getClass().getClassLoader().getResource("a.sh&qu…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ 反转一个二进制串
描述 一个32位有符号整数,用二进制编码来表示。现需要将该二进制编码按位反转,计算出反转后的值。 示例1 输入: 1 返回值: -2147483648 说明: 00000000 00000000 00000000 00000001 翻转后为 10000000 000000…...
![](https://img-blog.csdnimg.cn/img_convert/365dfaab2030f464ad08348246707450.png)
黑神话悟空-吉吉国王版本【抢先版】
在中国的游戏市场中,一款名为“黑神话悟空”的游戏引起了广泛的关注。这款游戏以中国传统的神话故事“西游记”为背景,创造了一个令人震撼的虚拟世界。今天,我们要来介绍的是这款游戏的一种特殊版本,那就是吉吉国王版本。 在吉吉国…...
![](https://img-blog.csdnimg.cn/img_convert/40bd5646e7613cfc18dec2c12af11f00.png)
【尚庭公寓SpringBoot + Vue 项目实战】预约看房与租约管理(完结)
【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结)1、业务说明2、接口开发2.1、预约看房管理2.1.1.保存或更新看房预约2.1.2. 查询个人预约…...
![](https://www.ngui.cc/images/no-images.jpg)
java拼图小游戏项目
创建一个Java拼图小游戏是一个有趣且富有教育意义的项目,可以锻炼你的编程技能。以下是开发一个基本拼图游戏可能需要考虑的几个步骤: 项目规划: 确定游戏的基本规则和玩法。设计游戏的界面和用户交互。 环境搭建: 确保你的开发环…...
![](https://img-blog.csdnimg.cn/direct/041dd1f0035442a9a2020cf639326eea.png)
[C++][数据结构][跳表]详细讲解
目录 0.什么是跳表?1.SkipList的优化思路2.SkipList的效率如何保证?3.SkipList实现4.SkipList VS 平衡搜索树 && Hash 0.什么是跳表? SkipList本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树…...
![](https://www.ngui.cc/images/no-images.jpg)
tinyxml
github下载相关的软件包,其中有四个文件需要主要需要关注就是分别是tinyxml12.cpp,tinyxml12.h,rss网页xml文件,还有就是官方给的test文件tinyxmltest.cpp。 example1就是提供一个打开文件的方式 int example_1() {XMLDocument …...
![](https://img-blog.csdnimg.cn/direct/699cb2a8fa6642108d679d7eb76478c8.png)
Docker(三)-Docker常用命令
1.run run命令执行流程:2.帮助启动类命令 2.1 启动docker systemctl start docker2.2 停止docker systemctl stop docker2.3 重启docker systemctl restart docker2.4查看docker状态 systemctl status docker2.5开机启动 systemctl enable docker2.6查看docker概要信息 …...
![](https://img-blog.csdnimg.cn/direct/bff7e5de270c47238de8955b25ad2fa7.png)
[MRCTF2020]PixelShooter
一个apk文件 jeb打开发现是apk文件 apk游戏逆向必须知道的知识: 一般关键数据在 Assets/bin/data/managed/assembly-csharp.dll这个文件里面 我不知道jeb为什么这里我没有 apk是个压缩包 直接解压 这个文件解压也可以发现flag {Unity_1S_Fun_233}...
![](https://img-blog.csdnimg.cn/direct/27ac270d9d874f4bb8b0ebdee2b30a11.png)
vue实现的商品列表网页
一、商品列表效果如下 二、代码; vue实现的商品列表网页 , 图片在vue项目的Public文件夹里的 imgs中 <template><div class"common-layout"><!-- el-container:外层容器。 当子元素中包含 <el-header> 或 <el-foo…...
![](https://www.ngui.cc/images/no-images.jpg)
【泛微系统】e-cology非标配功能概览
关于泛微非标功能的功能编号、功能名称及支持版本 编号名称支持版本001考勤功能4.500.0124-9.00+KB900190206002短信通用接口5.000.0327+KB50001003 及以上版本004计划任务接口5.0+KB50001003及以上版本005集成登录接口6.0及以上版本006流程中自定义浏览框5.0+KB50001003及以上…...
![](https://img-blog.csdnimg.cn/direct/d8225167d69c4e028830580b73447340.jpeg)
Python基础教程(二十八):pip模块
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
![](https://img-blog.csdnimg.cn/img_convert/6ea47576c21339178022ff4ced3af620.jpeg)
通信系统概述
1.定义 通信系统(也称为通信网络)是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,依靠网络软件及通信协议实现资源共享和信息传递的系统。 2.概述 随着通信技术和网络技术的不断发展ÿ…...
![](https://img-blog.csdnimg.cn/direct/20b9ab904af146e5899695377cf634be.png)
http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解
文章目录 HTTP/0.9HTTP/1.0HTTP/1.1队头阻塞(Head-of-Line Blocking)1. TCP 层的队头阻塞2. HTTP/1.1 的队头阻塞 HTTP/2HTTP/3 HTTP/0.9 发布时间:1991年 特点: 只支持 GET 方法没有 HTTP 头部响应中只有 HTML 内容࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
Hadoop 面试题(四)
1. 简述Hadoop节点的动态上线下线的大概操作 ? 在Hadoop集群中,节点的动态上下线指的是在不停止整个集群服务的情况下,添加或移除节点。这种能力对于维护和扩展集群非常重要。以下是Hadoop节点动态上线下线的大概操作步骤: 动态…...
![](https://img-blog.csdnimg.cn/direct/de4c71c31f54448385b4c4da41044db1.jpeg)
绽放光彩的小程序 UI 风格
绽放光彩的小程序 UI 风格...
![](https://img-blog.csdnimg.cn/direct/2ddda2e4d53844b6b442c96e24113e08.png)
电脑文件夹怎么加密?文件夹加密的5种方法
在数字化时代,信息安全显得尤为重要。对于个人电脑用户来说,文件夹加密是一种有效保护隐私和数据安全的方法。本文将介绍五种文件夹加密的方法,帮助您更好地保护自己的重要文件。 如何设置文件夹密码方法一:利用Windows系统自带的…...
![](https://img-blog.csdnimg.cn/img_convert/6e1880ed63b21b77281553a4db37ea59.png)
异步复位同步释放
目录 描述 输入描述: 输出描述: 参考代码 描述 题目描述: 请使用异步复位同步释放来将输入数据a存储到寄存器中,并画图说明异步复位同步释放的机制原理 信号示意图: clk为时钟 rst_n为低电平复位 d信号输入…...
![](https://img-blog.csdnimg.cn/direct/3f70d5e184db4bffad91e948d3b625f2.png)
JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式
在 JupyterLab 中,可以使用 LaTeX 语法生成复杂的数学公式。JupyterLab 内置对 LaTeX 的支持,使得我们可以方便地在 notebook 中编写和展示数学公式。以下是详细的步骤和示例。 1. 使用 LaTeX 生成数学公式 LaTeX 是一种专门用于排版数学公式的语言。J…...
![](https://img-blog.csdnimg.cn/f01f11e87f0d46e79d3bfc0ae5aee35b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y2D56-H5LiN5LiA5b6L,size_20,color_FFFFFF,t_70,g_se,x_16)
做奖杯的企业网站/百度seo课程
文章目录报错解决VM 将宿主机文件夹 映射至 虚拟机以及vm tools【共享文件夹、复制粘贴、拖动上传下载】报错解决 VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。 这个主要是由于我没有关闭虚拟机就直接强…...
![](/images/no-images.jpg)
做暧暧视频网站w/关键词优化的作用
JAVA类库整理标签(空格分隔): 技术栈[toc]commons-codec加解密功能封装 例:commons-codeccommons-codec1.12/** MD5加密*/DigestUtils.md5Hex("123456")commons-lang3工具类封装 例:org.apache.commonscommons-lang33.9public stat…...
![](/images/no-images.jpg)
江门网站制作华企立方/徐州seo
有一次在书店里买了一本书,这本书的名字叫做《新人性》,在这本书里,有作者自称价值50个亿的10句话,据作者介绍,这10句话是对来自3000多本励志书籍和3000多个成功学培训网站中大量激励警句的再提炼。我读了之后…...
![](https://img-blog.csdnimg.cn/img_convert/e89b78243db714b0f1140f236946f70f.png)
软件源码购买一般在哪个网站/保定网站推广公司
描述:LM2776DBVRLM2776 CMOS电容泵电压转换器可将2.7V至5.5V范围内的正电压转换,从而获得对应的等值负电压。 电感的转换器,解决了成本,尺寸和电磁干扰(EMI)多方面问题。在大多数负载条件下,LM2776的工作电流仅为100μ…...
![](https://img-blog.csdnimg.cn/2020090921223522.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoYXJfbQ==,size_16,color_FFFFFF,t_70#pic_center)
视频类html网站模板/关键词快速上首页排名
系列文章目录 Spring初识 Bean容器使用实例系列文章目录创建类java类applications.xmlpom.xml配置文件main函数运行结果创建类 java类 animal类 实现 狗 2 》猫 3 》鸭 4 》 鸡 9 名字和年龄的顺序 //animal 名字分别为狗 2 》猫 3 》鸭 4 》 鸡 9 public class Animals {p…...
烟台seo网站诊断/seo外包公司费用
晚上忽然发现自己的MAC从运行程序到看到Spring boot日志时间超过20秒。新建个空的boot空工程也需要10秒才会看到boot的启动日志。 最后设置了gc日志看了下有无异常情况。 从jvisualvm看下 Java HotSpot(TM) 64-Bit Server VM (25.131-b11) for bsd-amd64 JRE (1.8.0_131…...