Java 中的字符串连接

14 Apr 2025 | 5 分钟阅读

在 Java 编程中,字符串连接是一项基本操作。它对于操作和合并文本数据至关重要。Java 提供了多种连接字符串的方法,每种方法都有其优点和用例。在本节中,我们将讨论Java 中字符串连接的各种方法。

  1. 使用 "+"(字符串连接)运算符
  2. 使用 String.concat() 方法
  3. 使用 StringBuilder 或 StringBuffer 类
  4. 使用 String.join() 方法
  5. 使用 Java String.format() 方法
  6. 使用 Collector.joining() 方法

1. 使用 + 运算符

在 Java 中连接字符串最简单、最常用的方法是使用 + 运算符。我们可以通过简单地在它们之间使用 + 运算符来连接两个或多个字符串。例如:

TestStringConcatenation1.java

输出

Sachin Tendulkar

Java 编译器内部通过使用以下语句来处理字符串。

在 Java 中,字符串连接是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串连接运算符通过将第二个操作数附加到第一个操作数的末尾来生成新的 String。字符串连接运算符不仅可以连接 String,还可以连接原始值。让我们通过一个 Java 程序来理解它。

TestStringConcatenation2.java

输出

80Sachin4040

注意:在字符串文字之后,所有的 + 都将被视为字符串连接运算符。

2. 使用 String.concat() 方法

concat() 方法属于 Java String 类。它是连接字符串的 + 运算符的替代方法。它将一个字符串附加到另一个字符串的末尾。

语法

让我们来看 String.concat() 方法的示例。

TestStringConcatenation3.java

输出

Sachin Tendulkar

上面的 Java 程序使用 concat() 方法连接两个 String 对象 s1s2,并将结果存储在 s3 对象中。

3. 使用 Java StringBuilder 或 StringBuffer 类

为了解决与 + 运算符和 concat() 方法相关的性能问题,Java 提供了 StringBuilder 和 StringBuffer 这两个类,它们专门用于高效的字符串操作。

StringBuilder 类提供 append() 方法来执行连接操作。append() 方法接受不同类型的参数,如 Objects、StringBuilder、int、char、CharSequence、boolean、float、double。StringBuilder 是在 Java 中连接字符串最流行、最快的方法。它是一个可变类,意味着 StringBuilder 对象中存储的值可以被更新或更改。

StringBuilderExample.java

输出

Hello, Manoj Mamilla

StringBuilder 和 StringBuffer 这两个类都是可变的。这意味着它们可以在不为每个操作创建新实例的情况下进行修改。这使得它们比 + 运算符或 concat() 方法更有效,尤其是在循环中进行重复连接的情况下。

4. 使用 String.join() 方法

Java 8 引入了 String.join() 方法,这是一种使用分隔符连接多个字符串的简洁而富有表现力的方式。

StringJoinExample.java

输出

Hello, Manoj Mamilla

还有一些其他可能在 Java 中连接字符串的方法,

5. 使用 String.format() 方法

String.format() 方法提供了另一种在 Java 中连接字符串的方法,同时允许更精细地控制格式。下面是使用 format() 方法的一个示例。

StringFormatExample.java

输出

Hello, Manoj Mamilla

在这里,String 对象 result 被赋值为使用 String.format() 方法连接的 Strings firstName 和 lastName 的结果。format() 接受参数,格式说明符后跟 String 对象或值。

6. 使用 Collectors.joining() 方法(Java 8 及更高版本)

Java 8 中的 Collectors 类提供了 joining() 方法,该方法以与输入元素出现相同的顺序连接它们。

ColJoining.java

输出

abc, pqr, xyz

结论

字符串连接是 Java 中的一项常见操作,选择正确的方法取决于具体的性能要求和考虑因素。虽然 + 运算符和 concat() 方法简单方便,但对于大规模操作来说,它们可能不是最有效的。

在这种情况下,建议使用 StringBuilder 或 StringBuffer 以获得更好的性能。此外,String.join() 方法提供了一种简洁明了的方式来使用指定的分隔符连接字符串。了解每种方法的优缺点,使 Java 开发人员能够根据其应用程序的上下文做出明智的决定。


Java 中的字符串连接选择题

1. 在处理多次连接时,应使用以下哪种方法来实现 Java 中高效的字符串连接?

  1. 使用 + 运算符
  2. 使用 concat() 方法
  3. 使用 StringBuilder 或 StringBuffer 类
  4. 使用 String.join() 方法
 

答案:c)

解释:由于其可变性,StringBuilder 和 StringBuffer 类对于多次连接更有效。


2. 在 Java 中使用 + 运算符连接两个字符串的时间复杂度是多少?

  1. O(n)
  2. O(log n)
  3. O(n^2)
  4. O(1)
 

答案:c)

解释:在循环中使用 + 运算符连接两个字符串会导致时间复杂度为 O(n^2),其中 n 是字符总数。


3. 以下关于 Java 中字符串不可变性的陈述哪个是正确的?

  1. Java 中的字符串是可变的,可以在创建后进行修改。
  2. Java 中的字符串是不可变的,创建后不能进行修改。
  3. 可以使用 mutable 关键字使 Java 中的字符串变得可变。
  4. 字符串的不可变性取决于使用的 Java 版本。
 

答案:b)

解释:Java 中的字符串是不可变的,这意味着一旦创建,其值就不能被更改。


4. 在 Java 8 及更高版本中,哪种方法可以高效地连接多个字符串?

  1. String.concat()
  2. StringBuilder.append()
  3. String.join()
  4. StringBuffer.append()
 

答案:c)

解释:在 Java 8 及更高版本中,String.join() 方法使用分隔符高效地连接多个字符串。


5. 使用 StringBuilder 而不是使用 + 运算符进行字符串连接有什么好处?

  1. StringBuilder 提供了更好的可读性。
  2. 对于多次连接,StringBuilder 更快、更节省内存。
  3. StringBuilder 确保线程安全。
  4. StringBuilder 允许连接不同类型的数据。
 

答案:b)

解释:StringBuilder 是可变的,对于多次连接比 + 运算符更有效,因为它不会为每次连接创建新的字符串对象。


下一主题Substring-in-java