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));//1324119927
        s1.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.mfbz.cn/a/843625.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop3:MR程序处理小文件的优化办法(uber模式)

一、解决方案 1、在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS(数据源头) 2、Hadoop Archive(存储方向) 是一个高效的将小文件放入HDFS块中的文件存档工具,能够将多个小文件打包成一个HAR…

Java--反射

反射是什么 反射允许对成员变量,成员方法和构造方法的信息进行编程访问 获取class对象的三种方式 代码 package a2;public class Student {private String name;private int age;public Student(){}public Student(String name,int age){this.name name;this.age …

处理uniapp刷新后,点击返回按钮跳转到登录页的问题

在使用uniapp的原生返回的按钮时,如果没有刷新会正常返回到对应的页面,如果刷新后会在当前页反复横跳,或者跳转到登录页。那个时候我第一个想法时:使用浏览器的history.back()方法。因为浏览器刷新后还是可以通过右上角的返回按钮…

package.json中对peerDependencies的理解

peerDependencies只要是用来限制依赖的,最近在开发的时候有遇到这样的问题,所以研究了一下 "peerDependencies": {"vue/composition-api": "^1.0.5","vue/runtime-core": "^3.0.0","echarts&q…

数据库-练习

题目要求:按照要求建立数据库与表,并完成相应的查询操作 解题步骤如下代码所示: //建立相关的数据库mydb8_worker mysql> show databases; -------------------- | Database | -------------------- | information_schema | | …

MySQL通过bin-log恢复数据

MySQL通过bin-log恢复数据 1.bin-log说明2.数据恢复流程2.1 查看是否开启bin-log2.3 查看bin-log2.4 执行数据恢复操作2.5 检查数据是否恢复 1.bin-log说明 mysqldump和bin-log都可以作为MySQL数据库备份的方式: mysqldump 用于将整个或部分数据库导出为可执行的S…

spring-boot 整合 redisson 实现延时队列(文末有彩蛋)

应用场景 通常在一些需要经历一段时间或者到达某个指定时间节点才会执行的功能,比如以下这些场景: 订单超时提醒收货自动确认会议提醒代办事项提醒 为什么使用延时队列 对于数据量小且实时性要求不高的需求来说,最简单的方法就是定时扫描数据…

Odoo17架构概述

多层架构 Odoo遵循多层架构,这意味着演示,业务逻辑和数据存储是分开的。更具体地说,它使用三层架构。 UI展示层 UI表示层是 HTML5、JavaScript 和 CSS 的组合。 应用程序的最顶层是用户界面。界面的主要功能是将任务和结果转换为用户可以理…

MacBook电脑远程连接Linux系统的服务器方法

一、问题简介 Windows 操作系统的电脑可使用Xshell等功能强大的远程连接软件。通过连接软件,用户可以在一台电脑上访问并控制另一台远程计算机。这对于远程技术支持、远程办公等场景非常有用。但是MacBook电脑的macOS无法使用Xshell。 在Mac上远程连接到Windows服…

解决npm install(‘proxy‘ config is set properly. See: ‘npm help config‘)失败问题

摘要 重装电脑系统后,使用npm install初始化项目依赖失败了,错误提示:‘proxy’ config is set properly…,具体的错误提示如下图所示: 解决方案 经过报错信息查询解决办法,最终找到了两个比较好的方案&a…

最新可用度盘不限速后台系统源码_去授权开心版

某宝同款度盘不限速后台系统源码,验证已被我去除,两个后端系统,账号和卡密系统 第一步安装宝塔,部署卡密系统,需要环境php7.4 把源码丢进去,设置php7.4,和伪静态为thinkphp直接访问安装就行 …

MLIR的TOY教程学习笔记

MLIR TOY Language 文章目录 MLIR TOY Language如何编译该项目ch1: MLIR 前端IR解析ch2: 定义方言和算子 (ODS)1. 定义方言2. 定义OP3. OP相关操作4. 定义OP ODS (Operation Definition Specification)1. 基本定义2. 添加文档3. 验证OP4. 新增构造函数5. 定义打印OP的格式 ch3:…

简单工厂、工厂方法与抽象工厂之间的区别

简单工厂、工厂方法与抽象工厂之间的区别 1、简单工厂(Simple Factory)1.1 定义1.2 特点1.3 示例场景 2、工厂方法(Factory Method)2.1 定义2.2 特点2.3 示例场景 3、抽象工厂(Abstract Factory)3.1 定义3.…

视频共享融合赋能平台LntonCVS视频监控管理平台视频云解决方案

LntonCVS是基于国家标准GB28181协议开发的视频监控与云服务平台,支持多设备同时接入。该平台能够处理和分发多种视频流格式,包括RTSP、RTMP、FLV、HLS和WebRTC。主要功能包括视频直播监控、云端录像与存储、检索回放、智能告警、语音对讲和平台级联&…

buuctf web 第五到八题

[ACTF2020 新生赛]Exec 这里属实有点没想到了,以为要弹shell,结果不用 127.0.0.1;ls /PING 127.0.0.1 (127.0.0.1): 56 data bytes bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var127.0.0.1;tac /f*[GXYCTF2019]Pin…

全球大模型将往何处去?

在这个信息爆炸的时代,我们如同站在知识的海洋边,渴望着能够驾驭帆船,探索那些深邃的奥秘。 而今天,我们将启航,透过一份精心编制的报告,去洞察全球大模型的未来趋势,探索人工智能的无限可能。…

C++初学者指南-5.标准库(第一部分)--标准库查询存在算法

C初学者指南-5.标准库(第一部分)–标准库查询存在算法 文章目录 C初学者指南-5.标准库(第一部分)--标准库查询存在算法any_of / all_of / none_ofcountcount_if相关内容 不熟悉 C 的标准库算法? ⇒ 简介 any_of / all_of / none_of 如果在输入范围(所有元素…

桌面小宠物发布一周,第一次以独立开发者的身份赚到了100块

收入数据(AppStore一周收入统计) AppStore付费工具榜第七 应用简介 桌面新宠(NewPet),是我耗时半年开发的一款桌面宠物。我是被 QQ 宠物影响的那批人,上学时天天给 QQ 宠物喂食,很可惜它现在不在了。所以,我开发的初衷是想要在电…

华为HCIP Datacom H12-821 卷42

42.填空题 如图所示,MSTP网络中SW1为总根,请将以下交换机与IST域根和主桥配对。 参考答案:主桥1468 既是IST域根又是主桥468 既不是又不是就是25 解析: 主桥1468 既是IST域根又是主桥468 既不是又不是就是25 43.填空题 网络有…

通过HTML/CSS 实现各类进度条的功能。

需求:我们在开发中会遇到使用各式各样的进度条,因为当前插件里面进度条各式各样的,为了方便我们定制化的开发和方便修改样式,我们这里使用HTML和CSS样式来进行开发进度条功能。 通过本文学习我们会明白如何使用 HTML/CSS 创建各种…