如何在 Java 中优化字符串拼接?
字符串 被定义为一个字符数组。字符数组和字符串的区别在于字符串以特殊字符“\0”结尾。因为数组是不可变的(不能增长),所以字符串也是不可变的。每当对字符串进行更改时,就会创建一个全新的字符串。
拼接是端到端连接的过程。让我们举个例子来理解串联在英语中的意思。
Person 1 speaking to Person 2 - ItsCodingEra
Person 2 speaking to Person 1 - 2020India
Now, let us carry a process whose output is as follows- ItsCodingEra2020India
This process is called concatenation.
示例:
Input String = "Geeks" + "for" + "Geeks";
OutputString = "GeeksforGeeks" ;
我们有许多方法可以告诉计算机这样做,这些方法被称为方法。让我们描述计算机如何通过我们的方法以不同的方式执行一个动作。
该动作可通过 4 种方法发生:
- 使用“+”运算符
- 使用串联(I)内置方法
- 使用字符串生成器
- 使用 StringBuffer
让我们逐一描述和实现它们。
方法 1:使用“+”运算符的字符串连接
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to concatenate string
import java.lang.*;
class GFG {
public static void main(String[] args)
{
String str = "";
// timer-start time
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
// string concatenation
str += Integer.toString(0);
}
// timer-end time
long endTime = System.currentTimeMillis();
// display the result
System.out.println(
"Time taken to concatenate 100000 Strings using '+' operator : "
+ (endTime - startTime) + " ms");
}
}
Output
Time taken to concatenate 100000 Strings using '+' operator : 2126 ms
方法二:使用 concat()内置函数
Concat(String str)方法将指定的字符串连接到该字符串的末尾。此方法在给定字符串的末尾追加指定的字符串,并返回组合字符串。
示例:
String str="GeeksforGeeks";
s1 = s1.concat(".").concat("com");
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to concatenate string
import java.lang.*;
class GFG {
public static void main(String[] args)
{
String str = "";
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
str.concat(Integer.toString(0));
}
long endTime = System.currentTimeMillis();
System.out.println(
"Time taken to concatenate 100000 Strings using concat() method : "
+ (endTime - startTime) + " ms");
}
}
Output
Time taken to concatenate 100000 Strings using concat() method : 46 ms
方法 3:使用 StringBuilder(最佳方式)
StringBuilder 代表一个可变的字符序列。因为 Java 中的字符串类创建了一个不可变的字符序列,所以 StringBuilder 类提供了一个字符串类的替代,因为它创建了一个可变的字符序列。
示例:
StringBuilder str = new StringBuilder();
str.append("GFG");
使用 StringBuilder 方法进行拼接的时间复杂度:
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to concatenate string
import java.lang.*;
class GFG {
public static void main(String[] args)
{
StringBuilder str = new StringBuilder();
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
str.append(0);
}
long endTime = System.currentTimeMillis();
System.out.println(
"Time taken to concatenate 100000 Strings using StringBuilder append : "
+ (endTime - startTime) + " ms");
}
}
Output
Time taken to concatenate 100000 Strings using StringBuilder append : 34 ms
方法 4:使用 StringBuffer
StringBuffer 是 String 的对等类,提供了字符串的大部分功能。该字符串表示固定长度、不可变的字符序列,而 StringBuffer 表示可增长和可写的字符序列。
示例:
StringBuffer s = new StringBuffer("GeeksforGeeks");
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to concatenate string
import java.lang.*;
class GFG {
public static void main(String[] args)
{
StringBuffer str = new StringBuffer();
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
str.append(0);
}
long endTime = System.currentTimeMillis();
System.out.println(
"Time taken to concatenate 100000 Strings using StringBuffer append : "
+ (endTime - startTime) + " ms");
}
}
Output
Time taken to concatenate 100000 Strings using StringBuffer append : 41 ms
版权属于:月萌API www.moonapi.com,转载请注明出处