使用StringBuilder而不是String之间有什么区别

时间:2011-10-07 00:53:11

标签: java string

  

可能重复:
  String, StringBuffer, and StringBuilder

使用StringBuilder而不是String

之间有什么区别(优点,缺点)
StringBuilder text = new StringBuilder();
String cadena = "";
Scanner scanner = new Scanner(new FileInputStream(fFileName), fEncoding);
try {
  while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    text.append(line);
    cadena += line;
  }
} finally {
  scanner.close();
}    

1 个答案:

答案 0 :(得分:3)

它更快,但不是线程安全的。

您可以通过三种方式构建字符串。

  1. 只是连接字符串(“foo”+“bar”) - 最慢
  2. 使用StringBuffer,它是线程安全的,并且比#1
  3. 更快
  4. 使用StringBuilder,这是最快的,但线程安全
  5. 其他一些区别:

    String:字符串不变;它们的值在创建后无法更改。字符串缓冲区支持可变字符串。使用+运算符连接字符串不会修改所涉及的字符串,它会创建一个新的字符串,它是您要连接的字符串的组合。

    StringBuffer:一个线程安全,可变的字符序列。字符串缓冲区就像一个String,但可以修改。

    StringBuilder:一个可变的字符序列。此类提供与StringBuffer兼容的API,但不保证同步。