等效于:
StringBuilder一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
下面是个人写的测试代码可加深对其理解和记忆!
一句话总结:String 声明初始化的内容是对象分配到共享内存中,StringBuffer是线程安全的速度比String快,StringBulider线程不安全但最快,大部分时可以采用!
package practice; import java.util.Date; public class Test1 { private static final String base = "测试"; private static final int count = 1000000; public static void stringTest() { long begin, end; begin = System.currentTimeMillis(); String test = new String(base); for (int i = 0; i < count / 100; i++) { test = test + "add"; } end = System.currentTimeMillis(); System.out.println((end - begin) + "millis(使用String消耗的时间)"); } public static void stringBufferTest() { long begin, end; begin = System.currentTimeMillis(); StringBuffer test = new StringBuffer(base); for (int i = 0; i < count; i++) { test = test.append("add"); } end = System.currentTimeMillis(); System.out.println((end - begin) + "millis(使用Stringbuffer消耗的时间)"); } public static void stringBuliderTest() { long begin, end; begin = System.currentTimeMillis(); StringBuilder test = new StringBuilder("base"); for (int i = 0; i < count; i++) { test = test.append("add"); } end = System.currentTimeMillis(); System.out.println((end - begin) + "millis(使用StringBulider消耗的时间)"); } public static void main(String[] args) { stringTest(); System.out.println(); stringBufferTest(); System.out.println(); stringBuliderTest(); } }