大家可能都知道了,对于字符串的链接操作StringBuffer的性能要比String好!但是,这是为什么呢?原因如下:
这是StringBuffer中的源代码:
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
{
跟踪到AbstractStringBuilder后的源码:
abstract class AbstractStringBuilder implements Appendable, CharSequence {
/**
* The value is used for character storage.
*/
char value[];
再看看String中的源代码:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
相信,到这里大家都看出原因了吧!对!就是因为value[]前面多了一个final的修饰,可以想象一下,这意味着什么?
对!意味着:每次对String数组做一次修改,都要重新申请内存(因为被final修饰的变量是不能被修改的),然后再将以前的内容拷贝到新申请的内存中去;但是StringBuffer则不用,他只有当数组不够用的时候,才回去重新申请内存!故:这就是在字符串连接的操作中StringBuffer表现比String出众的根本原因。