StringBuilder、StringBuffer

StringBuilder

  • StringBuilder代表可变字符串对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
  • 好处:StringBuilder比String更适合做字符串的修该操作,效率会更高,代码也会更简洁。
构造器说明
public StringBuilder ( )创建一个空白的可变的字符串对象,不包含任何内容

public StringBuilder ( String str )

创建一个指定字符串内容的可变字符串对象
构造器说明
public StringBuilder append ( 任意类型 )添加数据并返回StringBuilder对象本身
public StringBuilder reverse ( )将对象的内容反转
public int length ( )返回对象内容的长度
public String toString ( )通过toString()就可以实现把StringBuilder转换为String
public class Test {public static void main(String[] args) {// 目标:搞清StringBuilder的用法和作用StringBuilder s = new StringBuilder("abcd");// 拼接内容s.append(11);s.append("qwer");s.append(true);// 支持链式编程s.append(666).append("wwwww").append("123");System.out.println(s);// 反转操作s.reverse();System.out.println(s);// 返回字符串长度System.out.println(s.length());// 把StringBuilder对象又转换成String类型String rs = s.toString();System.out.println(rs);}
}

为什么操作字符串建议使用StringBuilder,而不用String

public class Test {public static void main(String[] args) {// 目标:搞清StringBuilder的好处// 需求:需要拼接100万次的abc// 先用String测试String rs = "";for (int i = 1; i <= 1000000; i++) {rs = rs + "abc";}System.out.println(rs);}
}
public class Test {public static void main(String[] args) {// 目标:搞清StringBuilder的好处// 需求:需要拼接100万次的abc// 使用StringBuilderStringBuilder s = new StringBuilder();for (int i = 1; i <= 1000000; i++) {s.append("abc");}System.out.println(s);}
}

        如果使用String来完成这个任务的话,要等到结果需要较长的时间,因为String类型的每次添加abc的时候都会创建一个新的对象导致效率非常的慢。使用StringBuilder时就可以避免这个问题,差不多1~2秒的时间就可以得出结果。

  • 对于字符串相关的操作,如频繁的拼接、修改等,建议使用StringBuilder,效率更高。
  • 注意:如果存在字符较少,或者不需要存在,以及定义字符串变量,还是建议使用String。

StringBuffer

StringBuilder与StringBuffer

注意:

  • StringBuilder的用法与StringBuffer是一模一样的
  • 但StringBuilder是线程不安全的,StringBuffer是线程安全的

案例:返回任意整形数组的内容

public class Test {public static void main(String[] args) {// 目标:完成数组遍历,并拼接成指定格式int[] arr = new int[]{11,22,33};System.out.println(getArrayData(arr));}public static String getArrayData(int[] arr){// 判断数组是否为nullif (arr == null){return null;}StringBuilder s = new StringBuilder();s.append("[");for (int i = 0; i < arr.length; i++) {if (i != arr.length-1){s.append(arr[i]).append(", ");}else {s.append(arr[i]);}}s.append("]");String rs = s.toString();return rs;}
}

 

StringJoiner

  • JDK8开始才有的,跟StringBuilder一样,也是用来操作字符串的,也可以看成是一个容器,创建之后里面的内容是可变的。
  • 好处:不仅提高字符串的操作效率,并且在有些场景下使用它操字符串,代码会更加简洁。
import java.util.StringJoiner;public class Test {public static void main(String[] args) {// 目标:掌握StringJoiner的使用//StringJoiner s = new StringJoiner(", "); // 间隔符 输出:java1, java2, java3//间隔符 开始符 结束符StringJoiner s = new StringJoiner(", ","[","]"); //输出:[java1, java2, java3]s.add("java1");s.add("java2");s.add("java3");System.out.println(s);}
}

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

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

相关文章

计算机网络概述(上)——“计算机网络”

各位CSDN的uu们好呀&#xff0c;好久没有更新小雅兰的计算机网络的专栏啦&#xff0c;而且期末考试也要考计算机网络&#xff0c;所以&#xff0c;小雅兰就来写计算机网络的内容啦&#xff01;&#xff01;&#xff01;下面&#xff0c;让我们进入计算机网络概述的世界吧&#…

rust中的超时处理

rust中的超时处理 自从 tokio 1.0发布以来&#xff0c;rust的异步开发总算大势已定。尽管没达到标准库的速度&#xff0c;依然挡不住大家的热情。看编程排行榜&#xff0c;增加2倍的开发者。 既生瑜何生亮&#xff0c;感觉go就是小号的rust。 不废话了。背景&#xff1a;之前…

HarmonyOS引导页登陆页以及tabbar的代码说明 登陆页2

代码&#xff1a;这里的prompt.showToast是弹出提示&#xff0c;Extend(TextInput) 的功能是对TextInput做了公用的样式。isShowProgress是用来控制isShowProgress&#xff0c;出来一个等待效果 import prompt from ‘ohos.promptAction’; import router from ‘ohos.router…

Redis缓存雪崩、缓存击穿、缓存穿透

1. 什么是缓存雪崩 当我们提到缓存系统中的问题&#xff0c;缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效&#xff0c;导致瞬间大量的请求直接打到了数据库&#xff0c;可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中&#xff0c;…

【iptables】增加规则和删除规则

我们在另外一台机器上&#xff0c;使用ping命令&#xff0c;向当前机器发送报文&#xff0c;如下图所示&#xff0c;ping命令可以得到回应&#xff0c;证明ping命令发送的报文已经正常的发送到了防火墙所在的主机&#xff0c;ping命令所在机器IP地址为31.133&#xff08;黑色&a…

如何解决mac无法访问github

确定github能访问的ip地址 点击检测按钮&#xff0c;找到比较快的ip 修改hosts文件&#xff1a;打开终端&#xff0c;输入 open /etc/hosts 后回车&#xff0c;打开mac的文本编辑器 add github.com 140.82.121.4 github.com 199.232.69.194 github.global.ssl.fastly.net …

微服务与人工智能技术的融合

随着人工智能技术的快速发展&#xff0c;越来越多的企业开始关注微服务架构与人工智能技术的结合&#xff0c;以期在市场竞争中获得更大的优势。本文将深入探讨微服务架构与人工智能技术融合的优势、挑战&#xff0c;以及实现这一融合的最佳实践和方法。 首先&#xff0c;让我们…

NCNN环境部署及yolov5pt转ncnn模型转换推理

该内容还未完整&#xff0c;笔记内容&#xff0c;持续补充。 〇开发环境版本 vs2022 cmake3.21.1 ncnn20231027发行版 yolov5s v6.2 vunlkan1.2.198.1 Protobuf3.20.0 Opencv3.4.1 一、模型转换 yolov5s v6.2训练的pt模型&#xff0c;直接导出tourchscript&#xff0c…

ubuntu 开机自报IP地址(用于无屏幕小车-远程连接)

目录 1.环境安装2.代码3.打包成可执行文件4.开启开机自启 1.环境安装 sudo apt-get install espeak #先安装这个库 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyttsx32.90 #再安装pyttsx3 pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/si…

C语言实例_生成6位数的随机密码

一、前言 随着数字化时代的到来&#xff0c;人们在各个方面需要使用密码来保护个人隐私和敏感信息的安全。为了确保密码的安全性&#xff0c;密码应该是足够强大和难以猜测的&#xff0c;这就需要密码生成器来帮助用户生成高强度的随机密码。 随机密码生成器是一种计算机程序…

P1019 [NOIP2000 提高组] 单词接龙 刷题笔记

P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路来自 大佬 Chardo 的个人中心 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 匹配 &#xff1a; 将 第一个字符串末尾 和第二个字符串第一个开始匹配 如果 j<i这段走完了 flag还没…

ffmpeg两种windows版本区别说明

版本一 必须拷贝exe和dll文件才能使用&#xff0c;如果缺少dll则exe不正正常执行 如果缺少dll &#xff0c;执行 exe会报错如下 版本2 直接拷贝exe就能使用&#xff0c;没有依赖的环境

Power BI - 5分钟学习合并文件

每天5分钟&#xff0c;今天介绍Power BI合并文件 什么是合并文件&#xff1f; 合并文件就是将具有相同架构的多个文件合并到单个逻辑表中。 如果要合并同一文件夹中的所有文件时&#xff0c;此功能非常有用。 例如&#xff0c;如果你有一个文件夹&#xff0c;其中包含公司的所…

极智嘉加快出海发展步伐,可靠产品方案获客户认可

2023年&#xff0c;国内本土企业加快出海征程&#xff0c;不少企业在出海发展中表现出了优越的集团实力与创新的产品优势&#xff0c;有力彰显了我国先进的科技研发实力。作为全球仓储机器人引领者&#xff0c;极智嘉&#xff08;Geek&#xff09;也在不断加快出海发展步伐&…

已囤积189150枚BTC,微策略的策略会暴雷吗?

号外&#xff1a;教链内参12.27《美元快速下行&#xff0c;黄金再创新高》 日前&#xff0c;微策略&#xff08;Microstrategy&#xff09;创始人Michael Saylor发推称&#xff0c;微策略再次出手&#xff0c;以均价约42110刀再次加仓14620枚BTC。截至2023.12.26&#xff0c;微…

**Python**综合案例

Python综合案例 一、系统需求分析 1、需求分析 使用面向对象编程思想完成学员管理系统的开发,具体如下: ① 系统要求:学员数据存储在文件中 ② 系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。 2、角色…

超时控制:Go语言下的网络请求与时间赛跑

开场白&#xff1a;在互联网的世界里&#xff0c;我们经常要与各种API打交道。有时&#xff0c;这些API可能会因为各种原因而变得“慢条斯理”&#xff0c;这时&#xff0c;超时控制就显得尤为重要了。今天&#xff0c;我们就来聊聊如何在Go语言中实现HTTP请求的超时控制&#…

python读取eps矢量图片

再利用Image读取时&#xff0c;提示报错&#xff1a; OSError: Unable to locate Ghostscript on paths 解决办法&#xff1a; 首先要安裝ghostscript软件&#xff1a;Ghostscript : Downloads 安装后记住安装路径&#xff0c;并找到bin的文件夹 之后在使用时&#xff0c;在代…

java freemarker 动态生成excel文件

好久木有更新啦 抓住2023的小尾巴 浅浅更新一下吧~ 最近做了一个动态生成excel的功能&#xff0c;这里记录下部分功能&#xff0c;主要用到的是freemarker框架&#xff0c;spring就有带&#xff0c;我起的demo载入了一下freemarker的jar包 一、创建模板 首先可以创建一个e…

西部市场的无限潜力与成都的崛起“2024成都电子信息展会”

随着科技的飞速发展&#xff0c;电子信息产业已成为全球经济增长的重要引擎。作为中国西部的重要城市&#xff0c;成都正迅速崛起为电子信息产业的聚集地。2024成都电子信息博览会将于7月份在成都世纪城新国际会展中心隆重召开&#xff0c;此次盛会将汇集来自世界各地的业界精英…