观察如下代码:

String s = "";
for (int i = 0; i < 1000; i++) {
    s = s + "," + i;
}

 

虽然可以直接拼接字符串,但是,在循环中,每次循环都会创建新的字符串对象,然后扔掉旧的字符串。这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC效率

为了能高效拼接字符串,Java标准库提供了StringBuilder,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder中新增字符时,不会创建新的临时对象:

StringBuilder sb = new StringBuilder(1024);
for (int i = 0; i < 1000; i++) {
    sb.append(',');
    sb.append(i);
}
String s = sb.toString();

 

StringBuilder还可以进行链式操作:

public class Main {
    public static void main(String[] args) {
        var sb = new StringBuilder(1024);
        sb.append("Mr ")
          .append("Bob")
          .append("!")
          .insert(0, "Hello, ");
        System.out.println(sb.toString());
    }
}

 

 

相关文章:

  • 2022-12-23
  • 2021-07-14
  • 2022-12-23
  • 2021-06-28
  • 2021-08-21
  • 2021-08-04
  • 2021-10-25
  • 2021-09-30
猜你喜欢
  • 2021-11-27
  • 2022-12-23
  • 2021-11-06
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2021-06-22
相关资源
相似解决方案