StringBuilder, Stringbuffer,StringJoiner

StringBuilder

StringBuilder 代表可变字符串对象,相当于是一个容器,里面装的字符串是可以改变的,就是用来操作字符串的。
StringBuilder 比String更适合做字符串的修改操作,效率更高,代码更加的简洁。
在这里插入图片描述

public class HelloWorld {public static void main(String[] args) {StringBuilder s1 = new StringBuilder();StringBuilder s2 = new StringBuilder("abc");s1.append("abc");s1.append("123");s1.append("哈哈哈");s1.append(true);System.out.println(s1);//abc123哈哈哈true;s2.append("123").append("哈哈哈").append(true);System.out.println(s2);//abc123哈哈哈true;s1.reverse();//字符串反转System.out.println(s1);//eurt哈哈哈321cba;System.out.println(s1.length());//13 返回字符串的长度System.out.println(s1.toString());//转为String类型}
}

StringBuilder 是可变的,对字符串的修改不会产生新的对象

public class HelloWorld {public static void main(String[] args) {StringBuilder s1 = new StringBuilder();System.out.println(System.identityHashCode(s1));//1324119927s1.append("abc");s1.append("123");s1.append("哈哈哈");System.out.println(System.identityHashCode(s1));//1324119927}
}

变量改变前后对像的哈希地址并没有发生改变,表明修改是在原对象上进行的

StringBuilder 是非线程安全的,这意味着在多线程环境中同时访问和修改它可能会导致数据不一致。

StringBuffer

StringBuffer 是一个线程安全的可变字符串类,所有的方法都是同步的。这意味着在多线程环境中可以安全地使用 StringBuffer。
比 StringBuilder,性能稍差,因为同步机制增加了开销。
其构造器和方法与StringBuilder 类似。

StringJoiner

StringJoiner 是 Java 8 引入的一个类,用于构建由定界符分隔的字符串序列。它提供了一种方便的方式来连接字符串,并允许指定前缀和后缀。
在这里插入图片描述

public class HelloWorld {public static void main(String[] args) {StringJoiner s = new StringJoiner(",","[","]");s.add("123");s.add("hhh");s.add("哈哈哈");System.out.println(s);//[123,hhh,哈哈哈]System.out.println(s.length());//13}
}
总结

StringBuilder:适用于单线程环境中需要频繁修改字符串的场景,具有高效的性能。
StringBuffer:适用于多线程环境中需要频繁修改字符串的场景,线程安全但性能稍逊于 StringBuilder。
StringJoiner:适用于需要构建带定界符的字符串序列的场景,提供了简洁的 API 来处理前缀、后缀和分隔符。

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

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

相关文章

在结束的地方重新开始:十指之梢与新的轮回

一、前述 如果你想感受人潮汹涌,那么就请到大城市繁华街区的十字路口去看一看,尤其是节假日。 所以,交警对于城市交通的通畅,人们出行顺利的保障,是异常重要的。 交警,指挥交通有很多工具和方法&#xff0…

vscode 文件颜色变绿色

解决:关闭git功能 在设置中搜索Git:Enabled,取消Decorations: Enabled的勾选

速盾:cdn能防御ddos吗?

CDN(内容分发网络)是一种广泛应用于互联网中的技术,它通过将内容分发到全球各地的服务器上,以提高用户在访问网站时的加载速度和稳定性。然而,CDN是否能够有效防御DDoS(分布式拒绝服务)攻击是一…

UE5 C++在Cesium上给定一个坐标垂直地面射线正交的地形高度

一.方法一:需要一个Actor里,向下垂直射线。自身高度-射线距离。 #include "CesiumGlobeAnchorComponent.h" #include "CesiumOriginShiftComponent.h" #include "GeoTransforms.h" #include "CesiumGeoreference.h&…

OMOST 作画能力的硬核解析[C#]

1. 简介 1.1 什么是 OMOST? OMOST 是一款利用深度学习和生成对抗网络(GAN)技术的 AI 作画工具,能够自动生成高质量的绘画作品。它广泛应用于艺术创作、广告设计和教育培训等领域。 1.2 OMOST 的核心功能 自动生成绘画风格转换…

【Python】探索 Python 中的 callable 方法

为何每次早餐 仍然魂离魄散 原来 那朝分手都要啜泣中上班 明明能够过得这关 赢回旁人盛赞 原来 顽强自爱这样难 难得的激情总枉费 残忍的好人都美丽 别怕 你将无人会代替 🎵 陈慧娴《情意结》 在 Python 编程中,理解对象的可调用性…

04-用户画像+sqoop使用

优点 sqoop的作用是实现数据的导入和导出,主要是对数据库和数据仓库之间的操作 只要是支持jdbc连接的数据库都可以使用sqoop操作 添加Sqoop到环境变量中 export SQOOP_HOME/export/server/sqoop export PATH$PATH:$SQOOP_HOME/bin:$SQOOP_HOME/sbinsource /etc/…

内联汇编清楚变量指定位

static inline void clear_bit(int nr, volatile unsigned long *addr) {__asm__ __volatile__("lock ; ""btrl %1,%0": "m" (*addr): "Ir" (nr)); } 这段代码是一个内联函数,用于在特定地址的位图中清除一个位。它使用了…

Bootstrap 表单

Bootstrap 表单 Bootstrap 是一个流行的前端框架,用于快速开发响应式和移动设备优先的网页。它包含了一套丰富的组件,其中包括表单元素,这些元素可以帮助开发者创建风格统一、易于使用的表单界面。本文将详细介绍 Bootstrap 表单的基础知识&…

进程线程协程

协程(coroutine)是一种更轻量级的并发编程方式,它可以在一个线程内实现多任务的切换和执行。与进程和线程相比,协程有其独特的特点和优势。 理解协程 协程是一种可以暂停和恢复执行的函数。与传统函数不同,协程可以在…

嵌入式单片机软件与硬件的结合方法分析

不知道大家有没有疑惑,为什么软件能控制硬件?关于这个问题,给出直观解释的文章:本文分析STM32单片机到底是如何软硬件结合的,分析单片机程序如何编译,运行。 软硬件结合 初学者,通常有一个困惑,就是为什么软件能控制硬件?就像当年的51,为什么只要写P1=0X55,就可以…

Leetcode3212. 统计 X 和 Y 频数相等的子矩阵数量

Every day a Leetcode 题目来源:3212. 统计 X 和 Y 频数相等的子矩阵数量 解法1:二维前缀和 维护二维前缀和,分别统计 ‘X’ 和 ‘Y’ 的个数。 统计足以下条件的子矩阵数量: 包含 grid[0][0]‘X’ 和 ‘Y’ 的频数相等。至少…

贪吃蛇超精讲(C语言)

前言 如果你还是个萌新小白,那么该项目的攻克过程一定会十分艰难。虽然作者已经将文章尽可能写的逻辑清晰,内容详细。但所谓“纸上得来终觉浅”,在讲到陌生结构和函数时,大家请一定自己动手去敲一遍代码,这很重要&…

00 JavaWeb

学习资料:B站视频-黑马程序员JavaWeb基础教程 文章目录 JavaWeb1、JavaWeb简介2、 JavaWeb主要内容3、JavaWeb技术栈4、JavaWeb课程安排5、Web核心课程安排 JavaWeb 1、JavaWeb简介 Web:全球广域网,也称为万维网(www),能够通过浏…

Mysql-索引结构

一.什么是索引? 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引 二.无索引的情况 找到…

Java BitSet学习

一. 位运算 在学习 BitSet 之前,我们先看一下位运算; 下述我们拿 long 来接收位运算的返回值,我们知道 long 为 64 位,8 个字节; // 1. 右移一位,表示 num / 2;右移 6 位,表示 nu…

C++ | Leetcode C++题解之第273题整数转换英文表示

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<string> singles {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Ni…

DC-1靶场打靶第一次!!!!冲冲冲!

今天打了一下DC-1这个靶场&#xff0c;感觉收获比大&#xff0c;我就来记录一下。 我的思路是下面的这个 我们先把靶机导入&#xff0c;然后与我们的liunx(攻击机)在同一个网段中&#xff0c;这也大大的减低难度。 然后我们先对自己这个网段内存活的主机进行操作&#xff0c;我…

【Spring Boot】网页五子棋项目中遇到的困难及解决方法

目录 一、HikariPool-1 - Starting异常二、Invalid bound statement (not found)异常三、The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary异常四、The server time zone value时区报错异常五、补充知识点…

免费【2024】springboot 白优校园社团网站的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…