拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java中的字符串连接

Java中的字符串连接

白鹭 - 2022-09-24 2133 0 2

一、概述

Java中的字符串连接是最常见的操作之一。在本教程中,我们将介绍一些字符串连接的方法。但是,我们将重点描述如何使用concat()和“ +”运算符方法。最后,我们将讨论如何根据我们需要做的事情来选择正确的。

2. 连接方法

一般来说,在Java 中连接两个或多个字符串有不同的方法。此外,我们将查看一些示例,并对每个示例进行说明。

2.1。使用“ +”运算符

Java中**最常见的连接方法之一是使用“ +”运算符**。

“ +”运算符为字符串连接提供了比其他方法更大的灵活性。首先,它不会为空值抛出任何异常。其次,它将null 转换为其字符串表示形式。此外,我们可以使用它来连接两个以上的字符串。

让我们看一个代码示例:

@Test
 void whenUsingPlusOperatorANull_thenAssertEquals() {
 String stringOne = "Hello ";
 String stringTwo = null;
 assertEquals("Hello null", stringOne + stringTwo);
 }

编译器在内部将“ +”运算符转换为StringBuilder(或StringBuffer)类及其append()方法。

由于“ +”运算符默默地将参数转换为String(对对象使用toString()方法),我们避免了**NullPointerException ** 。但是,我们需要考虑我们的最终字符串结果是否适用于字符串主体中的“null”。

2.2.使用concat()方法

String类中的contact()方法在当前字符串的末尾附加一个指定的字符串。它返回一个组合字符串。

让我们测试一下这种行为:

@Test
 void whenUsingConcat_thenAssertEquals() {
 String stringOne = "Hello";
 String stringTwo = " World";
 assertEquals("Hello World", stringOne.concat(stringTwo));
 }

在前面的示例中,stringOne变量是基本字符串。使用concat()方法,stringTwo附加到stringOne的末尾。concat()操作是不可变的,所以我们需要一个显式赋值。下一个示例说明了这种情况:

@Test
 void whenUsingConcatWithOutAssignment_thenAssertNotEquals() {
 String stringOne = "Hello";
 String stringTwo = " World";
 stringOne.concat(stringTwo);
 assertNotEquals("Hello World", stringOne); // we get only Hello
 }

此外,为了在这种情况下获得最终的连接字符串,我们需要将concat()结果分配给一个变量:

stringOne = stringOne.concat(stringTwo);
 assertEquals("Hello World", stringOne);

concat()的另一个有用特性是当我们需要连接多个String对象时。这种方法允许。此外,我们还可以附加空格和特殊字符:

@Test
 void whenUsingConcatToMultipleStringConcatenation_thenAssertEquals() {
 String stringOne = "Hello";
 String stringTwo = "World";
 String stringThree = ", in Jav";
 stringOne = stringOne.concat(" ").concat(stringTwo).concat(stringThree).concat("@");
 assertEquals("Hello World, in [email protected]", stringOne);
 }

空值呢?当前字符串和要追加的字符串都不能是空值。否则,concat()方法**会**抛出**NullPointerException ** :

@Test
 void whenUsingConcatAppendANull_thenAssertEquals() {
 String stringOne = "Hello";
 String stringTwo = null;
 assertThrows(NullPointerException.class, () -> stringOne.concat(stringTwo));
 }

2.3.StringBuilder

首先,我们有StringBuilder类。此类提供append()方法来执行连接操作。下一个示例向我们展示了它是如何工作的:

@Test
 void whenUsingStringBuilder_thenAssertEquals() {
 StringBuilder builderOne = new StringBuilder("Hello");
 StringBuilder builderTwo = new StringBuilder(" World");
 StringBuilder builder = builderOne.append(builderTwo);
 assertEquals("Hello World", builder.toString());
 }

另一方面,类似的连接方法是StringBuffe类。StringBuilder(即非线程安全)的StringBuilder 不同,StringBuffer是同步的(即线程安全)。但它的性能比StringBuilder差。它有一个append()方法,就像StringBuilder一样。

2.4.字符串format()方法

执行字符串连接的另一种方法是使用String 类中的format()方法。使用%s,我们可以通过字符串值或对象连接多个字符串:

@Test
 void whenUsingStringFormat_thenAssertEquals() {
 String stringOne = "Hello";
 String stringTwo = " World";
 assertEquals("Hello World", String.format("%s%s", stringOne, stringTwo));
 }

2.5. Java 8 及更高版本中的连接方法

String类中的join()方法,对于Java 8 及更高版本,可以执行字符串连接。在这种情况下,此方法将在要连接的字符串之间使用的分隔符作为第一个参数:

@Test
 void whenUsingStringJoin_thenAssertEquals() {
 String stringOne = "Hello";
 String stringTwo = " World";
 assertEquals("Hello World", String.join("", stringOne, stringTwo));
 }

从Java 8 开始,添加了StringJoiner类。此类使用分隔符、前缀和后缀连接String以下代码片段是其使用示例:

@Test
 void whenUsingStringJoiner_thenAssertEquals() {
 StringJoiner joiner = new StringJoiner(", ");
 joiner.add("Hello");
 joiner.add("World");
 assertEquals("Hello, World", joiner.toString());
 }

此外,在Java 8 中,通过添加Stream API,我们可以找到收集器。Collectors类具有joining()方法。此方法的工作方式类似于String类中的join()方法。它用于收藏。以下示例代码片段向我们展示了它是如何工作的:

@Test
 void whenUsingCollectors_thenAssertEquals() {
 List<String> words = Arrays.asList("Hello", "World");
 String collect = words.stream().collect(Collectors.joining(", "));
 assertEquals("Hello, World", collect);
 }

3. 选择一种方法

最后,如果我们需要在concat()方法和“ +”运算符之间进行选择,我们需要考虑一些方面。

首先,concat()方法只接受字符串。同时,“ +”运算符接受任何类型并将其转换为字符串。另一方面,concat()方法在null 值上引发NullPointerExeption,而“ +”运算符则不是这样。

此外,两者之间存在性能差异。concat()方法比“ +”运算符执行得更好。后者总是创建一个新字符串,而不管字符串的长度。此外,我们需要考虑到concat()方法仅在要附加的字符串长度大于0 时创建一个新字符串。否则,它返回相同的对象。

4。结论

在本文中,我们快速概述了Java 中的字符串连接。此外,我们详细讨论了使用concat()和“ +”运算符来执行字符串连接。最后,我们对concat()方法和“ +”运算符以及如何在不同的上下文中选择其中一个进行了比较分析。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *