当前位置: 首页 > news >正文

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使用说明

  1. 创建StringBuilder对象:
StringBuilder sb = new StringBuilder();
  1. 添加字符串:

使用append()方法在StringBuilder末尾添加字符串。

sb.append("Hello");
sb.append(" ");
sb.append("Java");

或者使用链式调用:

sb.append("Hello").append(" ").append("Java");
  1. 插入字符串:

使用insert()方法在指定位置插入字符串。

sb.insert(6, ”wuhaha“);
  1. 删除字符串:

使用delete()方法删除指定范围内的字符串。

sb.delete(6, 15);
  1. 替换字符串:

使用replace()方法替换指定范围内的字符串。

sb.replace(0, 5, "Hi");
  1. 反转字符串:

使用reverse()方法反转StringBuilder中的内容。

sb.reverse();
  1. 获取字符串:

使用toString()方法将StringBuilder转换为一个不可变的String对象。

String result = sb.toString();
  1. 获取当前容量和长度:

capacity()方法返回当前StringBuilder的容量(可容纳字符的最大数量)。 length()方法返回当前StringBuilder中实际包含的字符数。

int capacity = sb.capacity();
int length = sb.length();
  1. 设置容量:

使用ensureCapacity()方法设置StringBuilder的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。

sb.ensureCapacity(100); // 设置容量为100
  1. 清空StringBuilder

使用setLength()方法将StringBuilder的长度设置为0,清空其中的内容。

sb.setLength(0);

StringBuilder是非线程安全的,如果在多线程环境下使用,建议使用StringBuffer类,它与StringBuilder类功能相似,但是线程安全。通常情况下,如果不涉及多线程操作,推荐使用StringBuilder,因为它的性能更好,速度也更快一些。

3.StringBuffer

StringBuffer是Java中用于处理可变字符串的类,它与StringBuilder类似,但是具有线程安全的特性。StringBuffer类位于java.lang包中,无需额外导入就可以直接使用。

以下是StringBuffer的详细使用说明:

  1. 创建StringBuffer对象:

    StringBuffer sb = new StringBuffer();
    
  2. 添加字符串:

    使用append()方法在StringBuffer末尾添加字符串。

    sb.append("Hello");
    sb.append(" ");
    sb.append("Java");
    

    或者使用链式调用:

    sb.append("Hello").append(" ").append("Java");
    
  3. 插入字符串:

    使用insert()方法在指定位置插入字符串。

    sb.insert(5, " beautiful");
    
  4. 删除字符串:

    使用delete()方法删除指定范围内的字符串。

    sb.delete(6, 15);
    
  5. 替换字符串:

    使用replace()方法替换指定范围内的字符串。

    sb.replace(0, 5, "Hi");
    
  6. 反转字符串:

    使用reverse()方法反转StringBuffer中的内容。

    sb.reverse();
    
  7. 获取字符串:

    使用toString()方法将StringBuffer转换为一个不可变的String对象。

    String result = sb.toString();
    
  8. 获取当前容量和长度:

    capacity()方法返回当前StringBuffer的容量(可容纳字符的最大数量)。 length()方法返回当前StringBuffer中实际包含的字符数。

    int capacity = sb.capacity();
    int length = sb.length();
    
  9. 设置容量:

    使用ensureCapacity()方法设置StringBuffer的容量。这样可以提前分配足够的空间,避免频繁地扩容,提高性能。

    sb.ensureCapacity(100); // 设置容量为100
    
  10. 清空StringBuffer

    使用setLength()方法将StringBuffer的长度设置为0,清空其中的内容。

    sb.setLength(0);
    

StringBuffer是线程安全的,适用于多线程环境下的字符串操作。但是在单线程环境下,如果没有特殊需求,推荐使用StringBuilder,因为它的性能更好。除非确实需要线程安全,否则StringBuilder通常更适合日常使用。

4.StringJoiner

StringJoiner是Java中用于拼接字符串的类,它提供了一种简单的方法来连接多个字符串,并可以在字符串之间添加分隔符。StringJoiner类位于java.util包中,需要导入使用。

以下是StringJoiner的详细使用说明:

  1. 创建StringJoiner对象:

    构造函数接收两个参数:分隔符(delimiter)和可选的前缀(prefix)和后缀(suffix)。分隔符是必需的,而前缀和后缀是可选的。

    StringJoiner sj = new StringJoiner(",", "[", "]");
    

    上面的例子表示使用逗号作为分隔符,同时在拼接的结果字符串前后分别添加方括号 []

  2. 添加字符串:

    使用add()方法向StringJoiner中添加字符串。

    sj.add("apple");
    sj.add("orange");
    sj.add("banana");
    

    这将在分隔符之间拼接字符串,并自动处理分隔符的添加。

  3. 获取拼接结果:

    使用toString()方法获取最终的拼接结果。

    String result = sj.toString();
    

    最终的结果将是 "[apple,orange,banana]"

  4. 设置空值替换:

    使用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()的详细使用说明:

  1. 使用String.join()

    String.join()方法接收两个参数:分隔符(delimiter)和要连接的多个字符串(Iterable、数组等)。

    String delimiter = ",";
    String result = String.join(delimiter, "apple", "orange", "banana");
    

    上面的例子表示使用逗号作为分隔符,将字符串 "apple""orange""banana" 连接成一个字符串。最终的结果将是 "apple,orange,banana"

  2. 使用数组作为参数:

    String.join()方法也可以接收一个字符串数组作为参数。

    String delimiter = "-";
    String[] array = {"2019", "08", "31"};
    String date = String.join(delimiter, array);
    

    上面的例子使用连字符(-)作为分隔符,将字符串数组 array 中的元素连接成一个日期字符串。最终的结果将是 "2019-08-31"

  3. 使用Iterable作为参数:

    String.join()方法还可以接收一个Iterable对象作为参数,例如ListSet等。

    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来说是不可变的&#xff0c;使用修改字符串是在不断地创建新的字符串对象&#xff0c;而不是在原有的对象上修改的。并且对于字符串的…...

在矩池云使用Llama2-7B的具体方法

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

API教程:轻松上手HTTP代理服务!

作为HTTP代理产品供应商&#xff0c;我们为您带来一份详细的教程&#xff0c;帮助您轻松上手使用API&#xff0c;并充分利用HTTP代理服务。无论您是开发人员、网络管理员还是普通用户&#xff0c;本教程将为您提供操作指南和代码模板&#xff0c;确保您能够顺利使用API并享受HT…...

脑网络通信:概念、模型与应用——Brain network communication: concepts, models and applications

脑网络通信:概念、模型与应用 介绍神经系统是通信网络从图论到大脑网络通信大脑网络通信模型和测量的分类法路由协议最短路径路由导航扩散过程广播(可通信性)参数模型线性阈值模型偏向性随机游走最短路径集合当前和新兴的应用将大脑结构与功能关联起来认知和临床表型的个体间…...

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

oracle数据库dbLink的使用

Oracle的数据库链路&#xff08;dbLink&#xff09;是一种允许在两个不同的数据库实例之间进行通信和数据交换的功能。它可以让你在一个数据库中访问另一个数据库的对象和数据&#xff0c;就像它们属于同一个数据库一样。 创建一个link: CREATE public DATABASE LINK link_sco…...

Coremail中睿天下|2023年第二季度企业邮箱安全态势观察

7月24日&#xff0c;Coremail邮件安全联合中睿天下发布《2023第二季度企业邮箱安全性研究报告》&#xff0c;对2023第二季度和2023上半年的企业邮箱的安全风险进行了分析。 一、垃圾邮件同比下降16.38% 根据Coremail邮件安全人工智能实验室&#xff08;以下简称AI实验室&#…...

ZooKeeper分布式锁、配置管理、服务发现在Java开发中的应用

ZooKeeper提供了多种功能&#xff0c;包括分布式锁、配置管理、服务发现、领导选举等。 下面是一些常见的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子句用于把来自两个或多个表的行结合起来&#xff0c;基于这些表之间的共同字段。 在…...

域名解析优先级

浏览器访问过程解析 访问网址——>首先在本地电脑看看hosts里面是否有域名对应IP地址&#xff0c;如何有直接访问对应IP&#xff0c; 如果没有&#xff0c;则联网询问DNS服务器&#xff08;一般网卡那边都配置了DNS服务器IP&#xff09; linux hosts 路径&#xff1a; w…...

【Opencv】视频跟踪算法KCF

目录 KCF算法简介opencv实现代码copencv实现代码python KCF算法简介 KCF&#xff08;Kernelized Correlation Filter&#xff09;是一种基于核相关滤波器的目标跟踪算法。它通过学习目标的外观特征和使用核相关滤波器进行目标定位。KCF属于传统算法的单目标跟踪器。下面是对KC…...

后端整理(集合框架、IO流、多线程)

1. 集合框架 Java集合类主要有两个根接口Collection和Map派生出来 Collection派生两个子接口 List List代表了有序可重复集合&#xff0c;可以直接根据元素的索引进行访问Set Set代表无序不可重复集合&#xff0c;只能根据元素本身进行访问 Map接口派生 Map代表的是存储key…...

C++ 类和对象篇(二) this指针

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

Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率

Excel是广泛应用于办公场景的优质电子表格软件&#xff0c;然而&#xff0c;许多人只是使用鼠标点击菜单和工具栏来完成操作&#xff0c;而忽略了快捷键的威力。在本文中&#xff0c;我们将详解Excel中的F1-F9快捷键&#xff0c;帮助您掌握实用的快捷操作&#xff0c;提升工作效…...

Webpack 安装教程

Webpack 是一个前端资源加载/打包工具。 安装 Webpack 使用 cnpm 安装 webpack&#xff1a; cnpm install webpack -g 创建项目 接下来我们创建一个目录 app&#xff1a; mkdir app 在 app 目录下添加 runoob1.js 文件&#xff0c;代码如下&#xff1a; app/runoob1.js 文件…...

移远通信首批加入“5G+eSIM计算终端产业合作计划”,助力大屏移动终端全时在线

7月29日&#xff0c;在全球数字娱乐产业盛会 ChinaJoy上&#xff0c;中国联通携手高通公司、GSMA发布了“5GeSIM 计算终端产业合作计划”。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信首批加入该计划&#xff0c;副总经理刘明辉受邀参加5GeSIM 计算终端产业合…...

全网最强大的工具箱—utools介绍及分享

今天来介绍一个相见恨晚的PC端工具——utools&#xff0c;什么是utools&#xff1f;用其自身的话来说&#xff1a;“uTools是一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件&#xff0c;打造你得心应手的工具集合。”,体验了下&#xff0c;好用且强大&…...

Linux常用基础命令❀

文章目录❀ ❀ls命令 ❀cd命令 ❀pwd命令 ❀date命令 ❀创建、删除文件和目录命令 ❀alias命令 ❀复制、移动、重命名、查看&#xff08;文件、目录&#xff09;命令 ❀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()的详细参数&#xff1a; conv2d(input: Tensor, weight: Tensor, bias: Optional[Tensor]None, stride: Union[_int, _s…...

主流开源监控系统一览

减少故障有两个层面的意思&#xff0c;一个是做好常态预防&#xff0c;不让故障发生&#xff1b;另一个是如果故障发生&#xff0c;要能尽快止损&#xff0c;减少故障时长。而监控的典型作用&#xff0c;就是帮助我们发现及定位故障&#xff0c;这两个环节对于减少故障时长至关…...

爬虫原理详解及requests抓包工具用法介绍

文章目录 一、什么是爬虫&#xff1f;二、爬虫的分类三、网址的构成四、爬虫的基本步骤五、动态页面和静态页面六、伪装请求头七、requests库介绍1. 概念&#xff1a;2. 安装方式&#xff08;使用镜像源&#xff09;&#xff1a;3. 基本使用&#xff1a;4. response对象对应的方…...

tinkerCAD案例:31. 3D 基元形状简介

tinkerCAD案例&#xff1a;31. 3D 基元形状简介 1 将一个想法从头脑带到现实世界是一次令人兴奋的冒险。在 Tinkercad 中&#xff0c;这将从一个新的设计开始。 在新设计中&#xff0c;简单的原始形状可以通过不同的方式组合成更复杂的形状。 在这个项目中&#xff0c;你将探索…...

Vue2基础一、快速入门

零、文章目录 Vue2基础一、快速入门 1、Vue 概念 &#xff08;1&#xff09;为什么学 前端必备技能 岗位多&#xff0c;绝大互联网公司都在使用Vue 提高开发效率 高薪必备技能&#xff08;Vue2Vue3&#xff09; &#xff08;2&#xff09;Vue是什么 **概念&#xff1a;…...

【POJ-3279】Fliptile(递推+搜索)

POJ-3279. Fliptile&#xff08;递推搜索&#xff09; Vjudge链接 题目描述 农场主约翰知道&#xff0c;一头智力得到满足的奶牛是一头快乐的奶牛&#xff0c;它会产更多的奶。他为奶牛安排了一项脑力活动&#xff0c;让它们摆弄一个 M N M N MN 的方格 ( 1 ≤ M ≤ 15 …...

522个matplotlib绘图案例,包含:折线图、散点图、条形图、饼图、直方图、3D图等,源码可直接运行!

文章目录 matplotlib介绍图表介绍折线图&#xff08;Line Plot&#xff09;散点图&#xff08;Scatter Plot&#xff09;条形图&#xff08;Bar Plot&#xff09;饼图&#xff08;Pie Chart&#xff09;直方图&#xff08;Histogram&#xff09;箱线图&#xff08;Box Plot&…...

windows安装Elasticsearch8.9.0

官网解压安装好路径&#xff08;非中文&#xff0c;无空格&#xff09; 可参考 言之有李LAX csdn http://t.csdn.cn/S2oju本人使用jdk17 修改配置elasticsearch.yml xpack.security.enabled: false xpack.security.http.ssl:enabled: false直接点击bin\elasticsearch.bat…...

用Delphi编写一个通用视频转换工具,让视频格式转换变得更简单

用Delphi编写的简单视频格式转换程序&#xff0c;它使用TComboBox、TOpenDialog和TSaveDialog组件来选择转换格式、选择源视频文件和选择目标视频文件。程序还使用TEdit组件允许用户输入参数&#xff0c;然后将这些组件中的信息拼接成转换命令并在DOS窗口中运行它。 procedure…...

Kafka系列之:安装Know Streaming详细步骤

Kafka系列之:安装Know Streaming详细步骤 一、相关技术博客二、安装elasticsearch1.下载elasticsearch2.创建数据目录3.创建es用户4.修改最大文件数5.解压elasticsearch6.赋予es用户目录权限7.修改es配置8.切换es用户启动elasticsearch三、安装KnowStreaming1.下载KnowStreami…...

绝杀 GETPOST 嵌套的 JSON 参数

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于Web应用程序中的数据传输。在HTTP数据包信息传递时&#xff0c;JSON扮演着非常正常的角色&#xff0c;因为它是一种通用的数据格式&#xff0c;可以被多种编程语言和应用程…...