String类型和StringBuffer类型的主要性能区别其实在于String是不可变的对象(为什么?问问Java的设计者吧,为什么String不是原生类型呢?)因此在每次对String类型进行改变的时候其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM的GC就会开始工作,那速度是一定会相当慢的。这里尝试举个不是很恰当的例子:
String S1 = “abc”;
For(int I = 0 ; I < 10000 ; I ++)// For模拟程序的多次调用
{
S1 + = “def”;
S1 = “abc”;
}
如果是这样的话,到这个for循环完毕后,如果内存中的对象没有被GC清理掉的话,内存中一共有上万个了,惊人的数目,而如果这是一个很多人使用的系统,这样的数目就不算很多了,所以大家使用的时候一定要小心。