Java常用类

Posted Steve_Nash

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java常用类相关的知识,希望对你有一定的参考价值。

StringBuffer和StringBuilder

是什么?字符串缓存区

工作原理:

  预先在内存中申请一块空间,以容纳字符序列,如果预留的空间不够用,则进行自动扩容,以容纳更多的字符序列

StringBuffer、StringBuilder和String的区别:

  String是不可变的字符序列,存储字符串常量池中

  StringBuffer底层是一个char数组,但是该数组是可变的,并且可以自动扩容

public final class StringBuffer
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{

    /**
     * A cache of the last value returned by toString. Cleared
     * whenever the StringBuffer is modified.
     */
    private transient char[] toStringCache;


    /**
     * Constructs a string buffer with no characters in it and an
     * initial capacity of 16 characters.
     */
    public StringBuffer() {
        super(16);  //默认容量为16
    }


    public StringBuffer(int capacity) {
        super(capacity);
    }

  
    public StringBuffer(String str) {
        super(str.length() + 16);
        append(str);
    }
}

  StringBuilder和StringBuffer的默认容量是16

abstract class AbstractStringBuilder implements Appendable, CharSequence {
    /**
     * The value is used for character storage.
     */
    char[] value;

    /**
}

  里面是一个char数组,那么数组定好了,长度就不会变了,那么自动扩容是怎么回事?是建一个新数组,将原始数组数据拷贝过来,所以是比较耗内存耗时间的,

所以最好在创建这两个类的对象的时候预测好需要的容量,采用指定容量的方式来创建对象,为了减少数组的拷贝,提高效率。

以上是关于Java常用类的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch代码片段,及工具类SearchEsUtil.java

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

java 代码片段

java代码在片段活动中不起作用

常用Java程序片段

C#常用代码片段备忘