String、StringBuffer、StringBuilder三者的异同?

String:不可变的字符序列;
Stringbuffer:可变的字符序列;线程安全的,效率低;
StringBuilder:可变的字符序列;JDK5.0新增的,线程不安全的,效率高;

String、StringBuffer、StringBuilder三者效率对比

效率从高到低排列:StringBuilder > StringBuffer > String

  1. public class Main {
  2. public static void main(String[] args) {
  3. long startTime = 0L;
  4. long endTime = 0L;
  5. String text = "";
  6. StringBuffer buffer = new StringBuffer("");
  7. StringBuilder builder = new StringBuilder("");
  8. //开始对比
  9. startTime = System.currentTimeMillis();
  10. for (int i = 0; i < 20000; i++) {
  11. buffer.append(String.valueOf(i));
  12. }
  13. endTime = System.currentTimeMillis();
  14. System.out.println("StringBuffer的执行时间:" + (endTime - startTime) + " ms");
  15. startTime = System.currentTimeMillis();
  16. for (int i = 0; i < 20000; i++) {
  17. builder.append(String.valueOf(i));
  18. }
  19. endTime = System.currentTimeMillis();
  20. System.out.println("StringBuilder的执行时间:" + (endTime - startTime) + " ms");
  21. startTime = System.currentTimeMillis();
  22. for (int i = 0; i < 20000; i++) {
  23. text = text + i;
  24. }
  25. endTime = System.currentTimeMillis();
  26. System.out.println("String的执行时间:" + (endTime - startTime) + " ms");
  27. }
  28. }
  29. //StringBuffer的执行时间:6 ms
  30. //StringBuilder的执行时间:3 ms
  31. //String的执行时间:1483 ms