String字符串拼接
String字符串拼接
- 1.简介
- 2.StringBuilder
- 2.1StringBuilder介绍
- 2.2使用说明
- 3.StringBuffer
- 4.StringJoiner
- 5.String.Join()
1.简介
对于String来说是不可变的,使用+修改字符串是在不断地创建新的字符串对象,而不是在原有的对象上修改的。并且对于字符串的修改和拼接通常提供StringBuffer和StringBuilder,以及使用的String.join()方法,具体如下所示。
2.StringBuilder
2.1StringBuilder介绍
StringBuilder是Java中的一个类,用于处理可变的字符串。它的设计目的是在进行频繁的字符串操作时,避免创建多个不可变的String
对象,从而提高字符串的处理效率。StringBuilder
类位于java.lang
包中,无需额外导入就可以直接使用。
2.2使用说明
- 创建
StringBuilder
对象:
StringBuilder sb = new StringBuilder();
- 添加字符串:
使用append()
方法在StringBuilder
末尾添加字符串。
sb.append("Hello");
sb.append(" ");
sb.append("Java");
或者使用链式调用:
sb.append("Hello").append(" ").append("Java");
- 插入字符串:
使用insert()
方法在指定位置插入字符串。
sb.insert(6, ”wuhaha“);
- 删除字符串:
使用delete()
方法删除指定范围内的字符串。
sb.delete(6, 15);
- 替换字符串:
使用replace()
方法替换指定范围内的字符串。
sb.replace(0, 5, "Hi");
- 反转字符串:
使用reverse()
方法反转StringBuilder
中的内容。
sb.reverse();
- 获取字符串:
使用toString()
方法将StringBuilder
转换为一个不可变的String
对象。
String result = sb.toString();
- 获取当前容量和长度:
capacity()
方法返回当前StringBuilder
的容量(可容纳字符的最大数量)。 length()
方法返回当前StringBuilder
中实际包含的字符数。
int capacity = sb.capacity();
int length = sb.length();
- 设置容量:
使用ensureCapacity()
方法设置StringBuilder
的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。
sb.ensureCapacity(100); // 设置容量为100
- 清空
StringBuilder
:
使用setLength()
方法将StringBuilder
的长度设置为0,清空其中的内容。
sb.setLength(0);
StringBuilder
是非线程安全的,如果在多线程环境下使用,建议使用StringBuffer
类,它与StringBuilder
类功能相似,但是线程安全。通常情况下,如果不涉及多线程操作,推荐使用StringBuilder
,因为它的性能更好,速度也更快一些。
3.StringBuffer
StringBuffer
是Java中用于处理可变字符串的类,它与StringBuilder
类似,但是具有线程安全的特性。StringBuffer
类位于java.lang
包中,无需额外导入就可以直接使用。
以下是StringBuffer
的详细使用说明:
-
创建
StringBuffer
对象:StringBuffer sb = new StringBuffer();
-
添加字符串:
使用
append()
方法在StringBuffer
末尾添加字符串。sb.append("Hello"); sb.append(" "); sb.append("Java");
或者使用链式调用:
sb.append("Hello").append(" ").append("Java");
-
插入字符串:
使用
insert()
方法在指定位置插入字符串。sb.insert(5, " beautiful");
-
删除字符串:
使用
delete()
方法删除指定范围内的字符串。sb.delete(6, 15);
-
替换字符串:
使用
replace()
方法替换指定范围内的字符串。sb.replace(0, 5, "Hi");
-
反转字符串:
使用
reverse()
方法反转StringBuffer
中的内容。sb.reverse();
-
获取字符串:
使用
toString()
方法将StringBuffer
转换为一个不可变的String
对象。String result = sb.toString();
-
获取当前容量和长度:
capacity()
方法返回当前StringBuffer
的容量(可容纳字符的最大数量)。length()
方法返回当前StringBuffer
中实际包含的字符数。int capacity = sb.capacity(); int length = sb.length();
-
设置容量:
使用
ensureCapacity()
方法设置StringBuffer
的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。sb.ensureCapacity(100); // 设置容量为100
-
清空
StringBuffer
:使用
setLength()
方法将StringBuffer
的长度设置为0,清空其中的内容。sb.setLength(0);
StringBuffer
是线程安全的,适用于多线程环境下的字符串操作。但是在单线程环境下,如果没有特殊需求,推荐使用StringBuilder
,因为它的性能更好。除非确实需要线程安全,否则StringBuilder
通常更适合日常使用。
4.StringJoiner
StringJoiner
是Java中用于拼接字符串的类,它提供了一种简单的方法来连接多个字符串,并可以在字符串之间添加分隔符。StringJoiner
类位于java.util
包中,需要导入使用。
以下是StringJoiner
的详细使用说明:
-
创建
StringJoiner
对象:构造函数接收两个参数:分隔符(delimiter)和可选的前缀(prefix)和后缀(suffix)。分隔符是必需的,而前缀和后缀是可选的。
StringJoiner sj = new StringJoiner(",", "[", "]");
上面的例子表示使用逗号作为分隔符,同时在拼接的结果字符串前后分别添加方括号
[
和]
。 -
添加字符串:
使用
add()
方法向StringJoiner
中添加字符串。sj.add("apple"); sj.add("orange"); sj.add("banana");
这将在分隔符之间拼接字符串,并自动处理分隔符的添加。
-
获取拼接结果:
使用
toString()
方法获取最终的拼接结果。String result = sj.toString();
最终的结果将是
"[apple,orange,banana]"
。 -
设置空值替换:
使用
setEmptyValue()
方法设置当StringJoiner
没有任何元素时返回的默认值。默认情况下,StringJoiner
没有任何元素时返回空字符串。sj.setEmptyValue("No fruits"); // 设置默认值为 "No fruits"
如果在没有添加任何字符串的情况下调用
toString()
方法,将返回设置的默认值。String result = sj.toString(); // 如果没有添加任何元素,将返回 "No fruits"
StringJoiner
类提供了一种简单而灵活的方式来拼接字符串,并可以很方便地在每个字符串之间添加分隔符和前后缀。它特别适合于需要构建带有分隔符的字符串,如CSV文件、JSON数组等。
5.String.Join()
String.join()
是Java中String
类提供的静态方法,用于将多个字符串按照指定的分隔符连接成一个单一的字符串。String.join()
方法在Java 8及更高版本中引入,相比于早期版本中的StringUtils.join()
或StringBuffer
/StringBuilder
的操作,更加简洁和方便。
以下是String.join()
的详细使用说明:
-
使用
String.join()
:String.join()
方法接收两个参数:分隔符(delimiter)和要连接的多个字符串(Iterable、数组等)。String delimiter = ","; String result = String.join(delimiter, "apple", "orange", "banana");
上面的例子表示使用逗号作为分隔符,将字符串
"apple"
、"orange"
和"banana"
连接成一个字符串。最终的结果将是"apple,orange,banana"
。 -
使用数组作为参数:
String.join()
方法也可以接收一个字符串数组作为参数。String delimiter = "-"; String[] array = {"2019", "08", "31"}; String date = String.join(delimiter, array);
上面的例子使用连字符(
-
)作为分隔符,将字符串数组array
中的元素连接成一个日期字符串。最终的结果将是"2019-08-31"
。 -
使用Iterable作为参数:
String.join()
方法还可以接收一个Iterable
对象作为参数,例如List
、Set
等。String delimiter = " "; List<String> words = Arrays.asList("Java", "is", "awesome"); String sentence = String.join(delimiter, words);
上面的例子使用空格作为分隔符,将
List
对象words
中的元素连接成一个句子。最终的结果将是"Java is awesome"
。
String.join()
方法非常简单易用,它提供了一种快速拼接字符串的方式,特别适用于需要在多个字符串之间添加分隔符的场景,如拼接CSV数据、构建URL等。
相关文章:
String字符串拼接
String字符串拼接 1.简介2.StringBuilder2.1StringBuilder介绍2.2使用说明 3.StringBuffer4.StringJoiner5.String.Join() 1.简介 对于String来说是不可变的,使用修改字符串是在不断地创建新的字符串对象,而不是在原有的对象上修改的。并且对于字符串的…...

在矩池云使用Llama2-7B的具体方法
今天给大家分享如何在矩池云服务器使用 Llama2-7b模型。 硬件要求 矩池云已经配置好了 Llama 2 Web UI 环境,显存需要大于 8G,可以选择 A4000、P100、3090 以及更高配置的等显卡。 租用机器 在矩池云主机市场:https://matpool.com/host-m…...

API教程:轻松上手HTTP代理服务!
作为HTTP代理产品供应商,我们为您带来一份详细的教程,帮助您轻松上手使用API,并充分利用HTTP代理服务。无论您是开发人员、网络管理员还是普通用户,本教程将为您提供操作指南和代码模板,确保您能够顺利使用API并享受HT…...
脑网络通信:概念、模型与应用——Brain network communication: concepts, models and applications
脑网络通信:概念、模型与应用 介绍神经系统是通信网络从图论到大脑网络通信大脑网络通信模型和测量的分类法路由协议最短路径路由导航扩散过程广播(可通信性)参数模型线性阈值模型偏向性随机游走最短路径集合当前和新兴的应用将大脑结构与功能关联起来认知和临床表型的个体间…...

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
oracle数据库dbLink的使用
Oracle的数据库链路(dbLink)是一种允许在两个不同的数据库实例之间进行通信和数据交换的功能。它可以让你在一个数据库中访问另一个数据库的对象和数据,就像它们属于同一个数据库一样。 创建一个link: CREATE public DATABASE LINK link_sco…...

Coremail中睿天下|2023年第二季度企业邮箱安全态势观察
7月24日,Coremail邮件安全联合中睿天下发布《2023第二季度企业邮箱安全性研究报告》,对2023第二季度和2023上半年的企业邮箱的安全风险进行了分析。 一、垃圾邮件同比下降16.38% 根据Coremail邮件安全人工智能实验室(以下简称AI实验室&#…...
ZooKeeper分布式锁、配置管理、服务发现在Java开发中的应用
ZooKeeper提供了多种功能,包括分布式锁、配置管理、服务发现、领导选举等。 下面是一些常见的ZooKeeper功能及其在Java中的应用示例代码。 分布式锁 import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch;pu…...

openGauss学习笔记-27 openGauss 高级数据管理- JOIN
文章目录 openGauss学习笔记-27 openGauss 高级数据管理- JOIN27.1 交叉连接27.2 内连接27.3 左外连接27.4 右外连接27.5 全外连接 openGauss学习笔记-27 openGauss 高级数据管理- JOIN JOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 在…...

域名解析优先级
浏览器访问过程解析 访问网址——>首先在本地电脑看看hosts里面是否有域名对应IP地址,如何有直接访问对应IP, 如果没有,则联网询问DNS服务器(一般网卡那边都配置了DNS服务器IP) linux hosts 路径: w…...
【Opencv】视频跟踪算法KCF
目录 KCF算法简介opencv实现代码copencv实现代码python KCF算法简介 KCF(Kernelized Correlation Filter)是一种基于核相关滤波器的目标跟踪算法。它通过学习目标的外观特征和使用核相关滤波器进行目标定位。KCF属于传统算法的单目标跟踪器。下面是对KC…...

后端整理(集合框架、IO流、多线程)
1. 集合框架 Java集合类主要有两个根接口Collection和Map派生出来 Collection派生两个子接口 List List代表了有序可重复集合,可以直接根据元素的索引进行访问Set Set代表无序不可重复集合,只能根据元素本身进行访问 Map接口派生 Map代表的是存储key…...

C++ 类和对象篇(二) this指针
目录 一、this指针概念 二、this指针的特性 三、this指针存在哪里? 四、this指针可以为空吗? 一、this指针概念 1.是什么? 它是类内非静态成员函数的隐含形参,this指针指向调用该函数的对象。 this指针是C编译器给每个“非静态…...

Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率
Excel是广泛应用于办公场景的优质电子表格软件,然而,许多人只是使用鼠标点击菜单和工具栏来完成操作,而忽略了快捷键的威力。在本文中,我们将详解Excel中的F1-F9快捷键,帮助您掌握实用的快捷操作,提升工作效…...
Webpack 安装教程
Webpack 是一个前端资源加载/打包工具。 安装 Webpack 使用 cnpm 安装 webpack: cnpm install webpack -g 创建项目 接下来我们创建一个目录 app: mkdir app 在 app 目录下添加 runoob1.js 文件,代码如下: app/runoob1.js 文件…...

移远通信首批加入“5G+eSIM计算终端产业合作计划”,助力大屏移动终端全时在线
7月29日,在全球数字娱乐产业盛会 ChinaJoy上,中国联通携手高通公司、GSMA发布了“5GeSIM 计算终端产业合作计划”。 作为全球领先的物联网整体解决方案供应商,移远通信首批加入该计划,副总经理刘明辉受邀参加5GeSIM 计算终端产业合…...
全网最强大的工具箱—utools介绍及分享
今天来介绍一个相见恨晚的PC端工具——utools,什么是utools?用其自身的话来说:“uTools是一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。”,体验了下,好用且强大&…...

Linux常用基础命令❀
文章目录❀ ❀ls命令 ❀cd命令 ❀pwd命令 ❀date命令 ❀创建、删除文件和目录命令 ❀alias命令 ❀复制、移动、重命名、查看(文件、目录)命令 ❀find查找、wc统计命令 ❀vi/vim命令 1、打开文件 2、工作模式 vi与vim的四个模式 进入编辑模式…...

SQL-进阶
mysql --local-infile -u root -pset global local_infile 1;load data local infile 目录 into able 表名 fields terminated by , lines terminated by \n;...

[Pytorch]卷积运算conv2d
文章目录 [Pytorch]卷积运算conv2d一.F.Conv2d二.nn.Conv2d三.nn.Conv2d的运算过程 [Pytorch]卷积运算conv2d 一.F.Conv2d torch.nn.functional.Conv2d()的详细参数: conv2d(input: Tensor, weight: Tensor, bias: Optional[Tensor]None, stride: Union[_int, _s…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...

macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...