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

【Java】String、StringBuffer、StringBuilder的区别

一、String

char[] 数组构成,使用了 final 修饰,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,然后把指针指向新的引用对象,不仅效率低下,而且浪费大量优先的内存空间。

二、StringBuffer

StringBuffer可变并且线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量

三、StringBuilder

可变但线程不安全。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

四、比较

  • 操作少量字符数据用 String
  • 单线程操作大量数据用 StringBuilder
  • 多线程操作大量数据用 StringBuffer
  1. StringStringBufferStringBuffer都是final类,不允许被继承;
  2. String声明的对象进行内容修改会产生一个新的对象,而StringBufferStringBuilder则是对自身进行修改,不会产生新的对象;
  3. 运行速度:StringBuilder>StringBuffer > String
  4. 线程安全:StringBuilder <StringBuffer

相关文章:

【Java】String、StringBuffer、StringBuilder的区别

一、String 由 char[] 数组构成&#xff0c;使用了 final 修饰&#xff0c;String的值是不可变的&#xff0c;这就导致每次对String的操作都会生成新的String对象&#xff0c;然后把指针指向新的引用对象&#xff0c;不仅效率低下&#xff0c;而且浪费大量优先的内存空间。 二…...

iOS开发:对Block使用的一次研究总结

在开发中Block是经常使用的,那我们就得知其然,知其所以然。 Block是什么? Block可以封装一个匿名函数为对象,并捕获上下文所需的数据,并传给目标对象在适当的时候回调。我们使用Block的目的其实就是回调传值,那我们去看看Block的底层,再深入了解一下Block。 Block的底…...

Spark 3.1.1 shuffle fetch 导致shuffle错位的问题

背景 最近从数据仓库小组那边反馈了一个问题,一个SQL任务出来的结果不正确&#xff0c;重新运行一次之后就没问题了&#xff0c;具体的SQL如下&#xff1a; select col1,count(1) as cnt from table1 where dt 20230202 group by col1 having count(1) > 1这个问题是偶发…...

2月第2周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年2月6日-2月12日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站…...

Jdk19 动态编译 Java源码为 Class 文件

动态编译 Java 源码为 Class一.背景1.Jdk 版本2.需求二.Java 源码动态编译实现1.Maven 依赖2.源码包装类3.Java 文件对象封装类4.文件管理器封装类5.类加载器6.类编译器三.动态编译测试1.普通测试类2.接口实现类3.测试四.用动态编译 Class 替换 SpringBoot 的 Bean&#xff08;…...

安装 GPU 版本的 tensorflow 完整版本

前言&#xff1a; 之前安装的 CPU 版本的 tensorflow 一直出问题&#xff0c;索性就直接安装 GPU 版本的 tensorflow 了&#xff08;有了GPU 就不能浪费&#xff09;。 安装过程&#xff1a; 1&#xff09;看自己有无 GPU&#xff0c;找到对应 GPU 的版本&#xff1a;任务管理…...

BOM编程-设置地址栏上的URL

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>设置地址栏上的URL</title> </head> <body> <script> function go(){ // 获…...

设计模式之原型模式与建造者模式详解和应用

目录1 原型模式1.1 原型模式定义1.2 原型模式的应用场景1.3 原型模式的通用写法&#xff08;浅拷贝&#xff09;1.4 使用序列化实现深度克隆1.5 克隆破坏单例模式1.6 原型模式在源码中的应用1.7 原型模式的优缺点1.8 总结2 建造者模式2.1 建造者模式定义2.2 建造者模式的应用场…...

C语言(函数和递归)

函数是完成特定任务的独立程序代码单元。 目录 一.函数 1.创建一个简单的函数 2.定义带形式参数的函数 3.使用return从函数中返回值 二.递归 一.函数 1.创建一个简单的函数 #include <stdio.h> void print(void); //函数原型 int main(){ print(); //函…...

快乐的shell命令行

快乐的shell命令行 PART1——基础 1.权限 #超级用户权限$普通用户 2.复制粘贴 复制&#xff1a;鼠标左键沿着文本拖动高亮的文本被复制到X管理的缓冲区&#xff08;或者双击一个单词&#xff09;粘贴&#xff1a;鼠标中键 3.简单命令 时间和日期date当前月份的日历cal磁…...

大数据面试题flume篇

1.Flume 的Source&#xff0c;Sink&#xff0c;Channel 的作用&#xff1f;你们Source 是什么类型&#xff1f; 1. 作用 &#xff08;1&#xff09;Source组件是专门用来收集数据的&#xff0c;可以处理各种类型、各种格式的日志数据&#xff0c;包括 avro、thrift、exec、jm…...

零信任-深信服零信任aTrust介绍(5)

​深信服零信任aTrust介绍 深信服是国内领先的互联网信任服务提供商&#xff0c;也是国内首家通过认证的全球信任服务商。深信服零信任是其中一项核心的信任技术&#xff0c;主要针对身份认证、数字签名、数字证书等方面的信任问题。 深信服零信任提供了一种新的安全保护模式…...

UVa 1343 The Rotation Game 旋转游戏 IDA* BFS 路径还原

题目链接&#xff1a;The Rotation Game 题目描述&#xff1a; 给定二十四个整数&#xff0c;这二十四个整数由八个一&#xff0c;八个二&#xff0c;八个三组成&#xff0c;从左到右&#xff0c;从上到下依次描述下图方格中的数字&#xff1a; 例如上图左边对应的输入就是[1,…...

硬件学习 软件Cadence day02 画原理图的基本操作 (键盘快捷键 , 原理图设计流程 , 从开始到导出网表流程)

1. ORCAD Capture cls 界面的快捷键 键盘 按键对应的操作I放大 &#xff08;可以滚轮操作&#xff09;O缩小 &#xff08;可以滚轮操作&#xff09;W画线Esc退出现在的状态 &#xff08;画图界面 右键 End xxx&#xff09;N放置网络标号J放置节点 (控制…...

【python】基于Socket的聊天室Python开发

基于Socket的聊天室Python开发一、Socket简述二、创建服务端Server2.1 创建服务端初始化2.2 监听客户端连接2.3 处理客户端消息三、创建客户端Client3.1 创建服务端初始化3.2 发送消息3.3 接收消息3.3 线程工作3.4 线程工作是不是挺好玩的呢&#xff1f;也可以作为课程设计哦&a…...

2023想转行软件测试的看过来,你想要了解的薪资、前景、岗位方向、学习路线都讲明白了

在过去的一年中&#xff0c;软件测试行业发展迅速&#xff0c;随着数字化技术应用的广泛普及&#xff0c;业界对于软件测试的要求也在持续迭代与增加。 同样的&#xff0c;有市场就有需求&#xff0c;软件测试逐渐成为企业中不可或缺的岗位&#xff0c;作为一个高薪又需求广的…...

TortoiseSVN的使用

基本概念 版本库 SVN保持数据的地方&#xff0c;所有的文件都保存在这个库中&#xff0c;Tortoise访问的就是远程服务器上的Subversion版本库。 工作拷贝 就是工作副本&#xff0c;可将版本库的文件拷贝到本地中&#xff0c;可以任意修改&#xff0c; 不会影响版本库。在你…...

操作系统(day09) -- 连续分配管理方式

连续分配管理方式 单元连续分配 动态分区分配 1.系统要用什么样的数据结构记录内存的使用情况&#xff1f; 两种常用的数据结构 空闲分区表 每个空闲分区对应一个表项。表项中包含分区号、分区大小、分区起始地址等信息空闲分区链 每个分区的起始部分和末尾部分分别设置前向…...

APISpace 带你一起走进西湖美景

俗话说&#xff1a;“上有天堂&#xff0c;下有苏杭”。 “欲把西湖比西子&#xff0c;浓妆艳抹总相宜” 今天我就带大家走进杭州的西湖美景。自古以来&#xff0c;文人歌者面对西湖美景留下千古绝句&#xff0c;还以西湖为背景书写了一段段动人的爱情传说。 天生自带浪漫色…...

傻白探索Chiplet,Design Space Exploration for Chiplet-Assembly-Based Processors(十三)

阅读了Design Space Exploration for Chiplet-Assembly-Based Processors这篇论文&#xff0c;是关于chiplet设计空间探索的&#xff0c;个人感觉核心贡献有两个&#xff1a;1.提出使用整数线性规划算法进行Chiplet的选择&#xff1b;2.基于RE和NRE提出了一个cost模型&#xff…...

3月25抽象类,接口

接口接口中定义成员变量final修饰必须赋值静态调用也简单&#xff0c;接口名.变量名多态多态成员访问特定点向上转型 向下转型转型当中可能出现的问题综合练习USB接口&#xff1a;鼠标&#xff1a;键盘接口笔记本电脑若想执行特有功能...

Ostrakon-VL-8B模型压缩实践:在有限显存下的部署与推理

Ostrakon-VL-8B模型压缩实践&#xff1a;在有限显存下的部署与推理 你是不是也遇到过这样的情况&#xff1a;好不容易找到一个功能强大的视觉语言大模型&#xff0c;比如最近挺火的Ostrakon-VL-8B&#xff0c;结果一看显存要求&#xff0c;直接傻眼了——动辄需要几十个G的显存…...

DAMOYOLO-S入门教程:如何扩展自定义类别——微调适配行业新标签

DAMOYOLO-S入门教程&#xff1a;如何扩展自定义类别——微调适配行业新标签 你是不是遇到过这样的问题&#xff1f;手头有一个很棒的通用目标检测模型&#xff0c;比如DAMOYOLO-S&#xff0c;它识别猫猫狗狗、汽车行人很在行&#xff0c;但你想让它帮你检测生产线上的特定零件…...

SEO_网站排名不上去?试试这几个SEO解决办法

SEO&#xff1a;网站排名不上去&#xff1f;试试这几个SEO解决办法 如果你发现自己的网站在百度上的排名一直不上去&#xff0c;你可能正面临着一场SEO战争。SEO&#xff0c;全称搜索引擎优化&#xff0c;是提高网站在搜索引擎结果中排名的关键技术。本文将为你详细探讨一些常见…...

计算机视觉领域投稿指南:如何选择适合你的顶刊顶会(附最新审稿周期与费用)

计算机视觉领域投稿策略&#xff1a;从期刊会议选择到高效发表的全流程指南 在计算机视觉领域&#xff0c;研究成果的发表渠道选择往往比研究本身更让人头疼。记得我第一次投稿时&#xff0c;面对琳琅满目的期刊和会议列表&#xff0c;整整两周都在纠结该把论文投向哪里——是追…...

工业相机图像采集处理:从 RAW 数据到 AI 可读图像,附basler相机 C#实战代码

工业相机图像采集处理&#xff1a;从 RAW 数据到 AI 可读图像&#xff0c;附basler相机 C#实战代码前言&#xff1a; 做工业视觉的兄弟们都遇到过这种场景&#xff1a; 用 Basler Pylon SDK 自带的 Converter 转图&#xff0c;代码是简洁了&#xff0c;但一上高帧率&#xff08…...

【超全】2026年3月OpenClaw(Clawdbot)京东云5分钟新手搭建流程

【超全】2026年3月OpenClaw&#xff08;Clawdbot&#xff09;京东云5分钟新手搭建流程。OpenClaw怎么部署&#xff1f;本文面向零基础用户&#xff0c;完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw&#xff08;Clawdbot&#xff09;的流程&#xff0c…...

空调智慧节能控制系统解决方案:一键部署,适配多场景节能需求

一、应用背景 当前&#xff0c;建筑能耗已成为社会总能耗的重要组成部分&#xff0c;其中空调系统能耗占比高达50%左右&#xff0c;尤其在商业综合体、高校、酒店、写字楼等大型建筑中&#xff0c;空调能耗过高、管理粗放的问题尤为突出。传统空调控制系统依赖人工操作&#xf…...

数组指针和二级指针之间的区别和用法

一.数组指针形为&#xff1a;int &#xff08;*p&#xff09;[x] NULL(x为所指向的一维数组的大小);p指向一个行向量&#xff08;二维数组&#xff09;的数组名。例如&#xff1a;int array[][3] {{1,1,2},{2,3,4}};int (*p)[3] array;遍历这个二维数组,可利用该指针来向函数…...

锁明明还没过期,为什么另一个线程能抢进去?

做分布式开发的时候&#xff0c;大家对 Redis 分布式锁应该都不陌生。为了防止锁死&#xff0c;比如服务器突然断电&#xff0c;锁永远不释放&#xff0c;我们通常都会给锁加一个过期时间&#xff08;TTL&#xff09;。写代码的时候&#xff0c;我们心里的算盘是这样打的&#…...