关于String,StringBuffer,StringBuilder的区别
String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
效率:StringBuilder>StringBuffer>String
注:如果是单线程序的话,优先考虑StringBuilder,如果是多线程的话,则考虑StringBuffer
案例如下:
1 package com.seven.exercise.StringTest; 2 3 import org.junit.Test; 4 5 public class StringBufferWithStringBuilder { 6 7 public void testString() { 8 long start = System.currentTimeMillis(); 9 String str = null; 10 for (int i = 0; i < 20000; i++) { 11 str = str + i + ","; 12 } 13 System.out.println(System.currentTimeMillis() - start); 14 } 15 16 public void testStringBuffer() { 17 long start = System.currentTimeMillis(); 18 19 StringBuffer sbuf = new StringBuffer(); 20 for (int i = 0; i < 20000; i++) { 21 sbuf.append(i + ","); 22 } 23 System.out.println(System.currentTimeMillis() - start); 24 } 25 26 public void testStringBulider() { 27 long start = System.currentTimeMillis(); 28 29 StringBuilder builder = new StringBuilder(); 30 for (int i = 0; i < 20000; i++) { 31 builder.append(i + ","); 32 } 33 System.out.println(System.currentTimeMillis() - start); 34 } 35 36 @Test 37 public void test(){ 38 testString(); 39 testStringBuffer(); 40 testStringBulider(); 41 } 42 43 }
运行结果如下:
1217
9
6