String StringBuilder StringBuffer的区别

目录

继承图

String

StringBuilder和StringBuffer


  1. 继承图

  2. String

    1. 是一个不可变的字符串, 一旦创建就不能再修改了
    2. 创建新的字符串时会先去字符串常量池中查找, 如果存在就不会再次创建了
    3. 不可变的原因
      1. String是一个final类, 里面的许多变量 方法也被final修饰了
      2. 底层使用的是一个char数组, 这个char数组也被final修饰了
  3. StringBuilder和StringBuffer

    1. 是一个可以修改的字符串
      1. 修改字符串时不会产生新的字符串
      2. 修改仅仅是对对象内部的char数组进行修改, 不会产生新的对象
    2. 都是都是继承自AbstractStringBuilder
    3. 底层是基于可修改的char数组, 没有被final修饰, 数组大小默认是16
    4. StringBuilder线程不安全, StringBuffer线程安全
      1. StringBuffer里面许多方法都加了synchronized锁
    5. 通过append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象

你可能感兴趣的:(Java面试,笔记,java)