的字符串连接_Java连接字符串的各种方法全汇总

a470aeb038900d56f71f9cf169090835.png

1.简介

Java提供了大量专用于 连接 字符串 的方法和类

在本教程中,我们将深入研究其中的几个,并 概述一些常见的陷阱和不良做法。

2. StringBuilder

首先是简陋的 StringBuilder。 此类 提供了一个 String 构建实用程序数组 ,可以轻松处理 String 操作。

让我们使用 StringBuilder 类构建 String 连接 的快速示例 :

StringBuilder stringBuilder = new StringBuilder( 100 ); stringBuilder.append( "Baeldung" ); stringBuilder.append( " is" ); stringBuilder.append( " awesome" ); assertEquals( "Baeldung is awesome" , stringBuilder.toString());

在内部, StringBuilder 维护一个可变的字符数组。 在我们的代码示例中,我们通过 StringBuilder 构造函数声明它的 初始大小为100由于这个大小声明, StringBuilder 可以是一种 连接 字符串 的非常有效的 方法

另外值得一提的是, StringBuffer是同步版本的StringBuilder

虽然同步通常与线程安全同义,但由于 StringBuffer的 构建器模式,不建议在多线程应用程序中使用同步 。虽然对同步方法的单独调用是线程安全的,但多个调用不是。

3.加法运算符

接下来是加法运算符(+)。这是导致添加数字的相同运算符, 并在应用于 字符串 时重载以连接

我们来看看它是如何工作的:

String myString = "The " + "quick " + "brown " + "fox..." ; assertEquals( "The quick brown fox..." , myString);

乍一看,这似乎比 StringBuilder 选项更简洁 。但是,当源代码编译时, +符号转换为 StringBuilder.append() 调用的链 。 因此, 混合使用 StringBuilder 和+ 连接 方法认为是不好的做法

此外, 应避免使用循环内的+运算符进行 字符串 连接。由于 String 对象是不可变的,因此每次连接调用都将导致创建一个新的 String 对象。

4. String的方法

4.1 String.concat

不出所料, String.concat 方法是我们尝试连接 String 对象时的第一个调用方式 。 此方法返回一个 String 对象,因此将该方法链接在一起是一个有用的功能。

String myString = "Both" .concat( " fickle" )  .concat( " dwarves" )  .concat( " jinx" )  .concat( " my" )  .concat( " pig" )  .concat( " quiz" ); assertEquals( "Both fickle dwarves jinx my pig quiz" , myString);

在这个例子中,我们的链以 String 文字 开头, 然后 concat 方法允许我们链接调用以追加更多的 字符串

4.2 String.format

接下来是对 的String.format 方法,这使我们能够注入多种的Java 对象字符串 的模板。

String.format 方法签名需要一个 单一的 字符串 表示我们的模板 。此 模板包含'%'字符,用于表示各种 对象 应放置 在其中的位置。

一旦我们的模板被声明,它就会 获取一个注入 模板 的 可变Object 数组 。

让我们看一下如何使用一个简单的例子:

String myString = String.format( "%s %s %.2f %s %s, %s..." , "I" ,  "ate" ,  2.5056302 ,  "blueberry" ,  "pies" ,  "oops" ); assertEquals( "I ate 2.51 blueberry pies, oops..." , myString);

正如我们上面所看到的,该方法已将我们的 字符串 注入正确的格式。

4.3 String.join (Java 8+)

如果我们的 应用程序在Java 8 或更高版本 上运行 ,我们可以利用 String.join 方法。有了这个,我们可以 加入一个带有公共分隔符的 字符串 数组 ,确保不会错过任何空格。

String[] strings = { "I'm" , "running" , "out" , "of" , "pangrams!" }; String myString = String.join( " " , strings); assertEquals( "I'm running out of pangrams!" , myString);

这种方法的一个巨大优势是不必担心字符串之间的分隔符。

5 StringJoiner (Java 8+)

StringJoiner 将所有 String.join 功能抽象 为一个易于使用的类。该 构造函数有一个分隔符,使用可选的前缀和后缀 。我们可以使用名称很好的 add 方法追加 Strings

StringJoiner fruitJoiner = new StringJoiner( 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值