一,String,StringBuffer,StringBuilder都是存储字符串的容器
二,String是final类型的,创建之后就不可以修改;StringBuffer和StringBuilder是变量,每次都是修改原来的对象;
三,StringBuffer是线程安全的,内部很多方法都带了关键字synchronized;StringBuilder是非线程安全的,所以StringBuilder的性能笔StringBuffer高;
四,String str = "wangwuguai";
str = str+"lalala";
实际上在内存中先创建一个str对象,存储字符串"wangwuguai";接着再创建另一个对象,存储字符串为"wangwuguailalala",垃圾回收掉str,并用另一个引用str指向新的字符串。
str="wuguai"+"zhoujian";在内存中只创建一个字符串"wuguaizhoujian"
而StringBuffer和StringBuilder都是修改原来的变量,所以从性能方面考虑:
StringBuilder>StringBuffer>String