Java中String的优化处理

String对象特点

  • String对象是Java中重要的数据类型
  • String对象的特点:
    • 不变性
    • 常量池优化
    • final定义

不变性

  • String对象的状态在创建之后就不再发生变化
  • 当一个String对象被多线程共享,而且被频繁访问时.可以省略同步和锁的时间,从而提高性能

常量池优化

  • 常量池优化: 当两个String对象拥有同一个常量值的时候,都是引用了常量池中同一个拷贝
  • 这样,当程序中某个字符串频繁出现时,常量池优化技术可以大大节省内存空间
String s1 = "constant";
String s2 = "constant";
String s3 = new String("constant");

// true - s1和s2引用的是相同的地址
s1 == s2;

// false - s1通过String赋值,s3通过new String()重新开辟了内存空间,所以引用的地址不同
s1 == s3;

// true - s3.intern()方法返回的是String在常量池中的引用
s1 == s3.intern();

final定义

  • String类以final进行修饰
  • String类不可能出现子类

String优化

优化split方法

  • 使用indexOf()subString() 方法进行自定义拆分,会显著提高性能

优化String拼接

  • 在循环中,使用 + 进行字符串拼接的效率明显偏低
  • 在循环中,拼接字符串建议使用StringBufferStringBuilderappend() 方法进行拼接
  • 通常建议使用StringBufferappend() 方法.
    • 尽管比StringBuilder的效率略低,但是实现了线程安全
    • 在无需考虑线程安全的情况下,可以使用StringBuilderappend() 方法

优化基本类型转化String

  • 基本类型转化为String类型有3种方法:
    • toString() : 效率最高
    • String.valueOf() : 调用底层的toString() 方法,效率次之
    • +"" :StringBuilder实现,先调用了append() 方法,然后调用toString() 方法获取字符串.效率最低
  • 基本类型转化String时建议使用toString() 方法

猜你喜欢

转载自blog.csdn.net/JewaveOxford/article/details/108031499