尽量确定StringBuffer的容量

来源:互联网 发布:淘宝如何设置两件包邮 编辑:程序博客网 时间:2024/06/06 03:53
StringBuffer 的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再 丢弃旧的数组。在大多数情况下,你可以在创建 StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。 
如:StringBuffer buffer = new StringBuffer(1000);  

但是,也不要设置的过长,避免浪费。总之,要有一个正确的预估。


源码:

    /**     * Constructs a string buffer with no characters in it and an      * initial capacity of 16 characters.      */    public StringBuffer() {super(16);    }    /**      * Creates an AbstractStringBuilder of the specified capacity.     */    AbstractStringBuilder(int capacity) {        value = new char[capacity];    }        /**     * This implements the expansion semantics of ensureCapacity with no     * size check or synchronization.     */    void expandCapacity(int minimumCapacity) {int newCapacity = (value.length + 1) * 2;        if (newCapacity < 0) {            newCapacity = Integer.MAX_VALUE;        } else if (minimumCapacity > newCapacity) {    newCapacity = minimumCapacity;}        value = Arrays.copyOf(value, newCapacity);    }


原创粉丝点击