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://xiahunao.cn/news/2660268.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

那些关于股票交易主机托管你需要知道的事儿!

什么是主机托管&#xff1f;主机托管是一种服务&#xff0c;客户可以将自己的硬件服务器托管给服务商&#xff0c;并享受专业的服务器托管服务。这种服务包括稳定的网络带宽、恒温、防尘、防火、防潮、防静电等。客户拥有对服务器的完全控制权限&#xff0c;可以自主决定运行的…

UG NX二次开发(C++)-通过两点和高度创建长方体

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、采用UFun函数来创建长方体3、采用NXOpen方法实现两点和高度创建长方体4、验证1、前言 在UG NX二次开发时,我们通常会采用ufun函数来完成功能的开发,但是有些功能在ufun函数中不能找到…

堡垒机的演变过程

堡垒机的概念源自跳板机&#xff08;前置机&#xff09;。早在20世纪90年代末21世纪初期&#xff0c;部分中大型企业为了能对运维人员的远程登录进行集中管理&#xff0c;会在机房部署一台跳板机。跳板机其实就是一台unix/windows操作系统的服务器。并且所有运维人员都需要先远…

谷粒商城篇章7 ---- P211-P235 ---- 认证服务【分布式高级篇四】

目录 1 环境搭建 1.1 新建认证服务模块gulimall-auth-server 1.2 认证服务模块基础配置 1.2.1 pom.xml 1.2.2 yml配置 1.2.2.1 application.yml配置 1.2.2.2 bootstrap.yml配置 1.2.3 主类 1.3 SwitchHosts增加配置 1.4 认证页面搭建 1.5 网关配置 1.6 新增视图映…

基于动态窗口的航线规划

MATLAB2016b可以运行 % ------------------------------------------------------------------------- % File : DWA 算法 % Discription : Mobile Robot Motion Planning with Dynamic Window Approach % Author :Yuncheng Jiang % License : Modified BSD Software License A…

紧固件行业的市场规模和增长率是怎样的,主要市场区域有哪些?

分析标准件行业市场容量和增长率 标准件指的是在各种工业设备中广泛使用的连接件&#xff0c;通常由螺栓、螺帽、垫圈等组成。它能够将两个或两个以上的零件牢固地固定在一起&#xff0c;起到传递力量或者关闭效果的作用。标准件是机械制造、汽车、航空、电子、建筑等行业中不…

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录 之前发布过Window方式,这次结合以上主题,完善下Linux相关登入方式过程,纯属做个记录,有需要的朋友可以做个学习参考。 一、Windows环境提示“‘mysql’ 不是内部或外部命令,也不是可运行的程序或批…

【SpringSecurity】之授权的使用案例

一、引言 1、什么是SpringSecurity授权 Spring Security授权是指基于Spring Security框架的访问控制过程。授权是指根据系统提前设置好的规则&#xff0c;给用户分配可以访问某一个资源的权限&#xff0c;用户根据自己所具有的权限&#xff0c;去执行相应操作。在Spring Secu…

Redis 核心知识总结

Redis 核心知识总结 认识 Redis 什么是 Redis&#xff1f; Redis 是一个由 C 语言开发并且基于内存的键值型数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 有以下几个特…

jQuery-1.7.2存在任意文件读取漏洞

jQuery是一个快速、简洁的JavaScript框架,是一个丰富的JavaScript代码库&#xff0c;其1.7.2版本的sys_dia_data_down模块存在任意文件读取漏洞&#xff0c;攻击者可通过前台读取任意文件。 1.漏洞级别 高危 2.漏洞搜索 fofa body"webui/js/jquerylib/jquery-1.7.2.m…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 1

深入浅出图解C#堆与栈 C# Heaping VS Stacking 第四节 参数传递对堆栈的影响1 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](http…

【银行测试】金融银行-理财项目面试/分析总结(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 银行理财相关的项…

小波如何让研究人员转换和理解数据?

在日益数据驱动的世界中&#xff0c;被称为小波的数学工具已成为分析和理解信息不可或缺的方法。许多研究人员以连续信号的形式接收他们的数据&#xff0c;这意味着随着时间的推移&#xff0c;信息流不断演变&#xff0c;例如地球物理学家聆听从地下岩层反弹的声波&#xff0c;…

客服软件如何提升企业客户满意度?

互联网的快速发展&#xff0c;越来越多的企业开始关注客户满意度的提升。客户满意度是企业成功的关键因素之一&#xff0c;而客服软件作为提升客户满意度的重要工具&#xff0c;正逐渐受到企业的重视。那么&#xff0c;客服软件如何提升企业客户满意度呢? 一、提高客户服务效率…

stm32项目(17)——基于stm32的温湿度检测protues仿真

1.功能设计 基于stm32单片机&#xff0c;驱动DHT11芯片&#xff0c;检测温度与湿度&#xff0c;并通过串口打印出来。 仿真图如下所示&#xff1a; 2.模块介绍 DHT11模块是一种低成本的数字温湿度传感器模块&#xff0c;常用于测量环境的温度和湿度。它由一个温湿度传感器和一…

MySQL事务、四大原则、执行步骤、四种隔离级别、锁、脏读、脏写等

MySQL事务 MySQL事务1.什么是事务&#xff1f;2.事务的四大原则3.事务执行的步骤4、事务的隔离性5、MySQL中的锁 MySQL事务 模拟一个转账业务&#xff1a; 上图中的sql语句&#xff1a; update from table set money mongey - 100 where name A; update from table set mone…

【Unity自制手册】基于Unity中物体移动相关方法和API集锦(动图详解)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

python打包项目pyinstaller的使用及问题解决

前言 在使用python编写了一个小程序之后&#xff0c;希望能够将其打包为一个可执行文件&#xff0c;如exe格式&#xff0c;这样就能够在其他电脑上安装使用&#xff0c;因此&#xff0c;打包python项目是一个普遍的需求。 配置 平台&#xff1a;windows10 工具&#xff1a;vi…

像美团一样商家入驻的小程序功能

美团一样的商家入驻小程序可以促进本地化商家的线上线下融合&#xff0c;为本地商家和用户提供更好的服务和体验&#xff0c;是一种数字化转型和创新&#xff0c;想要开发像美团一样的商家入驻小程序&#xff0c;需要具备以下功能&#xff1a; 1、不同行业独立频道 为本地化的…

6、LLaVA

简介 LLaVA官网 LLaVA使用Vicuna(LLaMA-2)作为LLM f ϕ ( ⋅ ) f_\phi() fϕ​(⋅)&#xff0c;使用预训练的CLIP图像编码器 ViT-L/14 g ( X v ) g(X_v) g(Xv​)。 输入图像 X v X_v Xv​&#xff0c;首先获取feature Z v g ( X v ) Z_vg(X_v) Zv​g(Xv​)。考虑到最后一…