快捷搜索:

您的位置:环球彩票登陆 > 环球彩票登陆 > java 数据结构(1) string stringbuffer stringbuild环球彩票

java 数据结构(1) string stringbuffer stringbuild环球彩票

发布时间:2019-10-15 08:41编辑:环球彩票登陆浏览(64)

    5、第0平面0000~FFFF的CodePoint使用一个char表示,其他平面的CodePoint使用高位代理 低位代理两个char表示

    二、使用场景

    1.使用 String 类的场景:在字符串不经常变化的场景中可以使用 String 类,例如常量的声明、少量的变量运算。
    2.使用 StringBuffer 类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用 StringBuffer,例如 XML 解析、HTTP 参数解析和封装。
    3.使用 StringBuilder 类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用 StringBuilder,如 SQL 语句的拼装、JSON 封装等。

    String、StringBuilder、StringBuffer

    一、基本概念

    查看 API 会发现,String、StringBuffer、StringBuilder 都实现了 CharSequence 接口,内部都是用一个char数组实现,虽然它们都与字符串相关,但是其处理机制不同。
    1.String:是不可改变的量,也就是创建后就不能在修改了。
    2.StringBuffer:是一个可变字符串序列,它与 String 一样,在内存中保存的都是一个有序的字符串序列(char 类型的数组),不同点是 StringBuffer 对象的值都是可变的。
    3.StringBuilder:与 StringBuffer 类基本相同,都是可变字符换字符串序列,不同点是 StringBuffer 是线程安全的,StringBuilder 是线程不安全的。

    4、容量扩充策略:

    三、性能

    1.由于 String 类的操作是产生新的 String 对象,而 StringBuilder 和 StringBuffer 只是一个字符数组的扩容而已,所以 String 类的操作要远慢于 StringBuffer 和 StringBuilder。简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。
    2.使用 StringBuffer、StringBuilder 的无参构造器产生的对象默认拥有** 16 个字符长度大小**的字符串缓冲区, 如果是调参数为 String 的构造器,默认的字符串缓冲区容量是 String 对象的长度 16 个长度的大小(留 16 个长度大小的空缓冲区)。详细信息可见 StringBuilder 源码。
    合理的指定字符串缓冲区的容量可以大大的提高系统的性能(若按表格的数据来算, 性能约提升了 108%), 这是因为 StringBuilder 在缓冲区容量不足的时候会自动扩容, 而扩容就会涉及到数组的拷贝(StringBuilder 和 StringBuffer 底层都是使用 char 数组来实现的), 这个也可以在源码的 expandCapacity(int) 方法中看的出。这些额外的开销都是需要花费掉一定量的时间的。

    1、char占两个字节,Character是char的包装类型

    参考
    浅谈 Java 字符串(String, StringBuffer, StringBuilder)
    小瓜牛漫谈 — String、StringBuffer、StringBuilder
    StringBuffer和StringBuilder的区别

    2、范围是\u0000~\uffff

    Character

    3、StringBuilder和StringBuffer默认容量16。

    环球彩票登陆 1

    1)选取原容量的2倍加2和指定容量比较的最大值,作为新容量

    2)不得大于Integer.MAXVALUE,会出现OutOfMemoryError异常

    4、valueOf(char->Character)当创建一个Character时建议调用此方法提高性能

    高位代理区间:D800~DBFF(1024,在第0平面)

    1、String不可变字符序列,StringBuilder和StringBuffer可变字符序列。

    2、StringBuilder和StringBuffer的API兼容,建议在单一线程下优先使用StringBuilder来提高性能。而StringBuffer是线程安全的。

    低位代理区间:DC00~DFFF(1024,在第0平面)

    3、缓存128位ASCII码

    本文由环球彩票登陆发布于环球彩票登陆,转载请注明出处:java 数据结构(1) string stringbuffer stringbuild环球彩票

    关键词: 环球彩票登陆 区别 Java String

上一篇:定性研究创建Persona环球彩票登陆

下一篇:没有了