String、StringBuffer、StringBuilder

来源:互联网 发布:java程序员需要学什么 编辑:程序博客网 时间:2024/04/30 11:07

String

  • 字符串常量对象
    • 一旦修改String的值,JVM在底层创建一个新的字符串对象,释放原来的String对象。
  • final类,不能被继承
  • Sting类存放在常量池(Constant Pool)中的String常量区域
    • 每次通过 String s = “first”;创建一个字符串,都会先在常量池中查找是否有内容相同的字符串(通过equals()方法)。如果存在,返回String pool中相应内存单元的引用,赋值给s。如果不存在,则创建一个新的”first”存放在常量池中,返回引用,赋值给s。
  • String s = new String(“string”)创建机制
    • 使用这种方法创建字符串,不管在常量池中是否有相同值的String字符串,总会创建一个新的String对象存储在堆区(heap)中,然后返回堆栈区中的相应内存单元的引用,赋值给s。s还是指向String pool中相应的内存单元。

StringBuffer与StringBuilder

  • 字符串变量
  • 继承AbstractStringBuilder抽象类
  • 内部维护一个Char[]数组
  • StringBuffer线程安全
  • StringBuilder线程不安全