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

String 、Stringbuffer、StringBuilder区别

上代码

public class Test {public static void main(String[] args) {//String 连接10000次消耗1127ms//StringBuffer 连接10000次消耗5ms//StringBuilder 连接10000次消耗3msStringTest(10000);StringBufferTest(10000);StringBuilderTest(10000);}public static void StringTest(int n){String str = "";//获取当前系统的时间  还没有执行下面for循环的时候的时间Long startTime = System.currentTimeMillis();//使用for循环来拼接!!!for(int i=0;i<n;i++){str += i;}//获取当前系统的时间  执行下面for循环的时候的时间Long endTime = System.currentTimeMillis();System.out.println("String 连接"+ n +"次消耗"+(endTime-startTime)+"ms");}public static void StringBufferTest(int n){StringBuffer str = new StringBuffer();Long startTime = System.currentTimeMillis();for(int i=0;i<n;i++){str.append(i);}Long endTime = System.currentTimeMillis();System.out.println("StringBuffer 连接"+ n +"次消耗"+(endTime-startTime)+"ms");}public static void StringBuilderTest(int n){StringBuilder str = new StringBuilder();Long startTime = System.currentTimeMillis();for(int i=0;i<n;i++){str.append(i);}Long endTime = System.currentTimeMillis();System.out.println("StringBuilder 连接"+ n +"次消耗"+(endTime-startTime)+"ms");}
}

我们可以清楚的看到String的字符串的连接效率是最低的,这一点对于大量字符串的拼接可以很明显的表示出来,所以说大量字符串的拼接最好不要选择String。[StringBuffer]和StringBuilder对于字符串的拼接效率是大致相同的

为啥StringBUilder效率高?因为StringBuilder是线程不安全的,StringBuffer线程安全

四、总结
1.String为固定长度的字符串,StringBuilder和StringBuffer为变长字符串;
2.stringBuffer是线程安全的,StringBuilder是非线程安全的;
3.StringBuffer和StringBuilder的默认初始容量是16,可以提前预估好字符串的长度,进一步减少扩容带来的额外开销

详细看这篇

https://blog.csdn.net/pf6668/article/details/108875324

相关文章:

String 、Stringbuffer、StringBuilder区别

上代码 public class Test {public static void main(String[] args) {//String 连接10000次消耗1127ms//StringBuffer 连接10000次消耗5ms//StringBuilder 连接10000次消耗3msStringTest(10000);StringBufferTest(10000);StringBuilderTest(10000);}public static void Strin…...

如何提升爬虫IP使用效率?精打细算的方法分享

在进行爬虫数据采集时&#xff0c;爬虫IP是不可或缺的工具。然而&#xff0c;爬虫IP的费用可能是一个爬虫项目的重要开支之一。为了帮助您节省爬虫IP经费&#xff0c;本文将分享一些经济高效的方法&#xff0c;让您在使用爬虫IP时更加节约成本&#xff0c;提高经济效益。 一、优…...

(高阶) Redis 7 第19讲 缓存过期淘汰策略 大厂篇

🌹 以下分享 Redis 缓存淘汰策略,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 面试题 1. 生产上,redis内存设置的多少 2. 如何配置、修改Redis 内存大小 3. 如果内存满了,如何处理 4. …...

【四旋翼飞行器】模拟四旋翼飞行器的平移和旋转动力学(Simulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Kaggle - LLM Science Exam(一):赛事概述、数据收集、BERT Baseline

文章目录 一、赛事概述1.1 OpenBookQA Dataset1.2 比赛背景1.3 评估方法和代码要求1.4 比赛数据集1.5 优秀notebook 二、BERT Baseline2.1 数据预处理2.2 定义data_collator2.3 加载模型&#xff0c;配置trainer并训练2.4 预测结果并提交2.5 deberta-v3-large 1k Wiki&#xff…...

mmap底层驱动实现(remap_pfn_range函数)

mmap底层驱动实现 myfb.c&#xff08;申请了128K空间&#xff09; #include <linux/init.h> #include <linux/tty.h> #include <linux/device.h> #include <linux/export.h> #include <linux/types.h> #include <linux/module.h> #inclu…...

品牌如何查窜货

当渠道中的产品出现不按规定区域销售时&#xff0c;这种行为就叫做窜货&#xff0c;窜货不仅会扰乱渠道的健康发展&#xff0c;损害经销商的利益&#xff0c;同时会滋生低价、假货的发生&#xff0c;有效的管控窜货&#xff0c;需要品牌先将窜货链店铺找出来&#xff0c;才能进…...

Java基于SpringBoot的车辆充电桩

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1、效果演示效果图 技术栈2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1…...

【ARM】(1)架构简介

前言 ARM既可以认为是一个公司的名字&#xff0c;也可以认为是对一类微处理器的通称&#xff0c;还可以认为是一种技术的名字。 ARM公司是专门从事基于RISC技术芯片设计开发的公司&#xff0c;作为知识产权&#xff08;IP&#xff09;供应商&#xff0c;本身不直接从事芯片生产…...

企业完善质量、环境、健康安全三体系认证的作用及其意义!

一、ISO三体系标准作用 ISO9001&#xff1a;质量管理体系&#xff0c;专门针对企业的质量管理&#xff0c;投标首选&#xff0c;很多大客户要求企业必备这项。 ISO14001&#xff1a;环境管理体系&#xff0c;针对企业的生产环境&#xff0c;排污&#xff0c;节能环保&#xf…...

<HarmonyOS第一课>运行Hello World——闯关习题及答案

判断题 1.DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。&#xff08; 对 &#xff09; 2.main_pages.json存放页面page路径配置信息。&#xff08; 对 &#xff09; 单选题 1.在stage模型中&#xff0c;下列配置文件属于AppScope文件夹的是&#xff1f;&#xff…...

NLP 02 RNN

一、RNN RNN(Recurrent Neural Network),中文称作循环神经网络它一般以序列数据为输入通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。 传统神经网络(包括CNN)&#xff0c;输入和输出都是互相独立的。但有些任务&#xff0c;后续的输出和之前…...

@PostConstruct注解

PostConstruct注解 PostConstruct注解是javax.annotation包下的一个注解&#xff0c;用于标记一个方法&#xff0c;在构造函数执行之后&#xff0c;依赖注入(如Autowired&#xff0c;意味着在方法内部可以安全地使用依赖注入的成员变量&#xff0c;而不会出现空指针异常&#…...

拓世AI|中秋节营销攻略,创意文案和海报一键生成

秋风意境多诗情&#xff0c;中秋月圆思最浓。又是一年中秋节&#xff0c;作为中国传统的重要节日之一&#xff0c;中秋节的意义早已不再仅仅是一家团圆的节日&#xff0c;更是一场商业盛宴。品牌方们纷纷加入其中&#xff0c;希望能够借助这一节日为自己的产品赢得更多的关注和…...

基于知识蒸馏的两阶段去雨去雪去雾模型学习记录(三)之知识测试阶段与评估模块

去雨去雾去雪算法分为两个阶段&#xff0c;分别是知识收集阶段与知识测试阶段&#xff0c;前面我们已经学习了知识收集阶段&#xff0c;了解到知识阶段的特征迁移模块&#xff08;CKT)与软损失&#xff08;SCRLoss&#xff09;,那么在知识收集阶段的主要重点便是HCRLoss(硬损失…...

代码随想录二刷day46

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣139. 单词拆分二、力扣动态规划&#xff1a;关于多重背包&#xff0c;你该了解这些&#xff01; 前言 提示&#xff1a;以下是本篇文章正文内容&#x…...

计算机竞赛 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…...

在线图片转BASE64、在线BASE64转图片

图片转BASE64、BASE64转图片...

什么是RPA?一文了解RPA发展与进程!

RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;是一种通过软件机器人模拟人类在计算机上执行重复性任务的技术。RPA的核心理念是将规则、过程和数据“机器人化”&#xff0c;从而实现对业务流程的自动化。RPA技术可以显著提高企业的工作效…...

【云备份项目】【Linux】:环境搭建(g++、json库、bundle库、httplib库)

文章目录 1. g 升级到 7.3 版本2. 安装 jsoncpp 库3. 下载 bundle 数据压缩库4. 下载 httplib 库从 Win 传输文件到 Linux解压缩 1. g 升级到 7.3 版本 &#x1f517;链接跳转 2. 安装 jsoncpp 库 &#x1f517;链接跳转 3. 下载 bundle 数据压缩库 安装 git 工具 sudo yum…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...