Java 中CharSequence、String、StringBuilder、StringBuffer

之前对这四个String、StringBuilder、StringBuffer、CharSequence的认识不够清晰,现在再重新深入的去了解下他们。


首先CharSequence可以说是另外三个的老大,CharSequence本身是一个接口(去掉了原本的注释):

/**
 * This interface represents an ordered set of characters and defines the
 * methods to probe them.
 */
public interface CharSequence {

   
    public int length();

  
    public char charAt(int index);

 
    public CharSequence subSequence(int start, int end);

   
    public String toString();
}

这就是CharSequence的源码,String、StringBuilder、StringBuffer都是实现了CharSequence这个接口而来的,所以他们都有这四个方法。上面的源码中可以看到最后一个方法toString()方法,说明StringBuilder、StringBuffer都可以转成String。

StringBuilder和StringBuffer我们一般都会用来拼接字符串,StringBuilder和StringBuffer的初始大小都是16,我们也可以按需求来自己定义大小。StringBuffer是线程安全的,StringBuilder是线程不安全的,所以单线程使用StringBuilder多线程使用StringBuffer,StringBuilder的性能也会高于StringBuffer。

我们平时有很多时候可能会直接使用加号来进行字符串拼接,如果字符串是已知的那么会在编译期以StringBuilder#append的形式编译,但是如果字符串是获取的是未知的,那么会无端创建很多不必要的对象,占用内存,所以尽量不要使用加好来拼接字符串。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Tip:笔者马上毕业了,准备开始 Java 的进阶学习计划。于是打算先从 String 类的源码分析入手,作为后面...
    石先阅读 14,114评论 16 58
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,512评论 18 399
  • Java 语言支持的类型分为两类:基本类型和引用类型。整型(byte 1, short 2, int 4, lon...
    xiaogmail阅读 5,193评论 0 10
  • 其实,在我没有怀孕之前,对妊娠纹一点都不了解,也不知道是长怎么样的. 有一天掐嫂子肚子的赘肉,这一圈圈的,可以拿去...
    时尚宝妈阅读 3,870评论 0 0
  • 打两天酱油 分总还不批我离职 估计他想多给我发几天工资 下周一直接提离职 周二走人
    武允儿阅读 1,486评论 0 0

友情链接更多精彩内容