java可变字符串

news2024/12/24 11:27:07

一、常用方法 以StringBuilder为例

1、append(String str) 添加

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
		
//在源字符串后添加world
StringBuilder add = str.append("world");
System.out.println(add);//结果helloworld

2、insert(int offset, String str),例如insert(2,"吖吼"),在索引号2的位置插入字符串''吖吼''

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//在字符串索引值为2即第三个字符插入"吖吼"
StringBuilder ins = str.insert(2,"吖吼");
System.out.println(ins);//结果是he吖吼llo

3、delete(int start, int end),[开始位置,结束位置)-->前闭后开,要头不要尾

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//删除字符串索引值为2、3的字符
System.out.println(str.delete(1,3));//结果是hlo

 4、deleteCharAt(int index)删除指定字符

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//删除字符串第二个字符
System.out.println(str.deleteCharAt(1));//结果是hllo

5、setCharAt(int index, char ch)指定字符修改

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//修改字符串第一个字符为'g'
str.setCharAt(0, 'g');//没有返回值
System.out.println(str);//结果是gello

6、charAt(int index)查询字符

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//查询索引号为0的字符
System.out.println(str.charAt(0));//结果为h

7、reverse()字符串反转

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//反转字符串
System.out.println(str.reverse());//结果为olleh

8、replace(int start, int end, String str)替换字串,替头不替尾

StringBuilder str = new StringBuilder("hello");
System.out.println(str);
//替换前两个字符为666
System.out.println(str.replace(0,2,"666"));//替头不替尾,结果是666llo

起初计算机操作字符串,要求稳,StringBuffer支持多线程操作,这个字符串可能被好多个任务同时进行操作,例如A线程要改为“asd”B现成要改为“vbn”,会出现一些错乱问题,而StringBuffer牺牲了些性能,去协调多线程,保证线程安全,数据不丢失不发生错乱。如果不需要多线程,单线程下可以用StringBuilder,快一些

二、String 和 StringBuilder 性能比较

字符串拼接所需时间为例,进行比较

String所需时间

 

public class StringXn {
	public static void main(String[] args) {
		String str ="";
		long start = System.currentTimeMillis();//获取当前毫秒级时间
		for(int i = 0;i<1000000;i++) {
			str +="第"+i+"元素";//循环拼接字符串
		}
		long end = System.currentTimeMillis();//拼接结束时的时间
		System.out.println("String需要的时间为"+(end-start)+"毫秒");//字符串拼接需要的时间
	}

}

 StringBuilder所需时间

 

public class StringBuilderXn {
	public static void main(String[] args) {
		StringBuilder str = new StringBuilder("");
		long start = System.currentTimeMillis();
		for(int i = 0;i<1000000;i++) {
			str = str.append("第").append(i).append("元素");
		}
		long end = System.currentTimeMillis();
		System.out.println("StringBuilder需要的时间为"+(end-start)+"毫秒");
	}

}

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

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

相关文章

Platypus:Quick,Cheap,and Powerful Refinement of LLMs

Platypus:Quick,Cheap,and Powerful Refinement of LLMs IntroductionMethod2.1 Curating Open- PlatypusRemoving similar&duplicate questionsContamination CheckFine-tuning & mergingResult参考Introduction 现在大模型已经取得很不错的结果,如何把大模型的能…

PL 侧驱动和fpga 重加载的方法

可以解决很多的问题 时钟稳定后加载特定fpga ip &#xff08;要不内核崩的一塌糊涂&#xff09;fpga 稳定复位软件决定fpga ip 加载的时序 dluash load /usr/local/scripts/si5512_setup.lua usleep 30 mkdir -p /lib/firmware cp -rf /usr/local/firmare/{*.bit.bin,*.dtbo} …

css 实现svg动态图标效果

效果演示&#xff1a; 实现思路&#xff1a;主要是通过css的stroke相关属性来设置实现的。 html代码: <svgt"1692441666814"class"icon"viewBox"0 0 1024 1024"version"1.1"xmlns"http://www.w3.org/2000/svg"p-id"…

jps(JVM Process Status Tool):虚拟机进程状况工具

jps&#xff08;JVM Process Status Tool&#xff09;&#xff1a;虚拟机进程状况工具 列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执行主类名称&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;以及这些进程的本地虚拟机唯一ID&#xff08;LVMID&am…

VMware上搭建的虚拟机突然本地无法连接服务器

长时间没有使用VMware 虚拟机了&#xff0c;今天突然登录上去&#xff0c;启动虚拟服务器后发现本地等不了了&#xff0c; 经过排查发现是开启了&#xff1a;VirtualBox Host-Only Network 关闭之后就本机就可以直连服务器了

java能实现热替换而属性不丢失的原因

1.替换的是klass&#xff0c;数据在oop里面 2.这个没想通说明对java面向对象底层实现不了解。

Midjourney API 申请及使用

在人工智能绘图领域&#xff0c;想必大家听说过 Midjourney 的大名吧&#xff01; Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作&#xff0c;只要简单输入绘图指令&#xff0c;这个神奇的工具就能在瞬间为我们呈现出对应的图像。无论是任何物体还是任何风…

linux中shell脚本——shell数组、正则表达式及文件三剑客之AWK

目录 一.shell数组 1.1.数组分类 1.2.定义数组方法 二.正则表达式 2.1.元字符 2.2.表示次数 2.3.位置锚定 2.4.分组 2.5.扩展正则表达式 三.文本三剑客之AWK 3.1.awk介绍及使用格式 3.2.处理动作 3.3.awk选项 3.4.awk处理模式 2.5.awk常见的内置变量 2.6.if条…

5.5.webrtc的线程管理

今天呢&#xff0c;我们来介绍一下线程的管理与绑定&#xff0c;首先我们来看一下web rtc中的线程管理类&#xff0c;也就是thread manager。对于这个类来说呢&#xff0c;其实实现非常简单&#xff0c;对吧&#xff1f; 包括了几个重要的成员&#xff0c;第一个成员呢就是ins…

2021年12月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:我家的门牌号 我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。 若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。 数据保证有唯一解。 时间限制:1000 内存限制:65536 输入 一个正整数n。n < 100000。 输出 一行,包含…

DTC 19服务学习2

紧跟上篇 0x04 reportDTCSnapshotRecordByDTCNumber 通过DTC和快照序列来获取DTC快照记录。 适用以下假设&#xff1a; — 服务器支持存储给定 DTC 的两个 DTCSnapshot 记录的能力。 — 此示例假定是上一个示例的延续。 — 假设服务器请求服务器存储的 DTC 编号 123456 的两个…

【学会动态规划】环绕字符串中唯一的子字符串(25)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

使用 Amazon Redshift Serverless 和 Toucan 构建数据故事应用程序

这是由 Toucan 的解决方案工程师 Django Bouchez与亚马逊云科技共同撰写的特约文章。 带有控制面板、报告和分析的商业智能&#xff08;BI&#xff0c;Business Intelligence&#xff09;仍是最受欢迎的数据和分析使用场景之一。它为业务分析师和经理提供企业的过去状态和当前状…

尝试自主打造一个有限状态机(一)

前言 我们都知道Unity有自带的有限状态机Animator&#xff0c;它的功能非常强大&#xff0c;为了探索它背后的原理&#xff0c;我开启了这个系列的文章&#xff0c;尝试通过自主打造一个有限状态机来理解Animator的工作原理&#xff0c;同时我会将这个状态机应用于实际&#xf…

unity 之 Input.GetMouseButtonDown 的使用

文章目录 Input.GetMouseButtonDown Input.GetMouseButtonDown 当涉及到处理鼠标输入的时候&#xff0c;Input.GetMouseButtonDown 是一个常用的函数。它可以用来检测鼠标按键是否在特定帧被按下。下面我会详细介绍这个函数&#xff0c;并举两个例子说明如何使用它。 函数签名…

美国陆军希望大数据技术能够帮助保护其云安全

随着陆军采用更大型的云服务&#xff0c;一位高级官员警告说&#xff0c;一些在私营部门有效的快速软件开发技巧和简单解决方案&#xff08;例如开放代码库&#xff09;如果没有额外的安全性&#xff0c;将无法为军队工作。 我们知道现代软件开发确实依赖于第三方库&#xff…

基于知识蒸馏的两阶段去雨、雪、雾算法调试记录

前言 该项目的介绍可以参考博主这篇博文&#xff1a;基于知识蒸馏的去雪、去雾、去雨算法 调试过程 该项目中inference.py可以直接使用&#xff0c;只要将student的权重文件放入即可&#xff0c;博主实验过其去噪后的结果&#xff0c;貌似是变清晰了一点。但train时的meta里的…

lnmp(docker)

1. 建立工作目录 [rootdocker ~]# mkdir /opt/nginx [rootdocker ~]# cd /opt/nginx [rootdocker nginx]# rz -E rz waiting to receive. #上传 nginx 安装包 nginx-1.12.0.tar.gz[rootdocker nginx]# rz -E rz waiting to receive. #上传 wordpress 服务包 wordpress-4.9.4-z…

使用shell脚本批量curl调用接口

文章目录 [toc] 1. 批量调用接口的方式1.1&#xff09;方式一&#xff1a;业务代码 curl1.2&#xff09;方式二 : shell curl 2.curl和wget的使用2.1&#xff09;wget2.2) curl2.2.1) curl发送POST请求2.2.2) curl发送GET请求2.2.3) 参数有其他类型 3. shell脚本4. 从windows…

深度学习最强奠基作ResNet《Deep Residual Learning for Image Recognition》论文解读(上篇)

1、摘要 1.1 第一段 作者说深度神经网络是非常难以训练的&#xff0c;我们使用了一个残差学习框架的网络来使得训练非常深的网络比之前容易得很多。 把层作为一个残差学习函数相对于层输入的一个方法&#xff0c;而不是说跟之前一样的学习unreferenced functions 作者提供了…