美文网首页Java程序优化
一、字符串优化处理

一、字符串优化处理

作者: 城市里永远的学习者 | 来源:发表于2018-11-21 13:31 被阅读0次

    一、String对象及其特点
    核心组成:字符数组 char[] 、offset偏移量 、count长度
    特点:1. 不可变性 2.针对常量池的优化 3.类的final定义
    二、subString引起的内存溢出
    1.subString 在jdk7版本以下存在,解决方案x = new String(x.substring(x, y));这样的话,就会创建一个新数组,切断与原来的数组的引用,既然JDK6中存在这样一个鸡肋,SUN工程师们肯定会解决的,在JDK7中,该鸡肋已经得到解决。在JDK7中调用substring时,会自动创建一个字符数组,新字符串指向新字符数组,则原来数组可以被GC处理。
    this.value = Arrays.copyOfRange(value, offset, offset + count);
    三、字符分隔与查找
    split---->StringTokenizer----->indexOf 性能递增
    charAt 也是高效的
    四、String和StringBuffer、StringBuilder
    String对象是不可变对象,需要字符操作的地方都是新建对象,一来会增加新对象数,增大占用内存;二来会降低效率;
    注意:1. + :new是新建String对象操作 2.String类的方法都是新建String对象操作
    效率低下,为了提升效率使用StringBuilder和StringBuffer类。
    小结:
    (1)如果要操作少量的数据用 String;
    (2)多线程操作字符串缓冲区下操作大量数据 StringBuffer,因为方法都是synchronized同步方法
    (3)单线程操作字符串缓冲区下操作大量数据 StringBuilder(推荐使用),因为始终是一个对象,本质上是native 的数组arrayCopy操作

    相关文章

      网友评论

        本文标题:一、字符串优化处理

        本文链接:https://www.haomeiwen.com/subject/netcqqtx.html