String
2020-07-19 本文已影响0人
淡季的风
Java 中有3种字符串类:String 、StringBuffer、StringBuilder。
- String 是不可变字符串。StringBuffer、StringBuilder 是可变字符串。
- String 、StringBuffer、StringBuilder 都是final类, 不可被继承 。
- StringBuffer是线程安全的,StringBuilder是线程不安全的。
String
public final class String implements Serializable, Comparable<String>, CharSequence {
@Stable
private final byte[] value;
private final byte coder;
private int hash;
private static final long serialVersionUID = -6849794470754667710L;
public String() {
this.value = "".value;
this.coder = "".coder;
}
}
- String 主要由一个不可变字节数组byte[] value 组成, 该字节数组由final修饰, 一旦初始化,就不可修改,因此String是不可变字符串。
- String是fina类, 不可被继承,因此我们无法重写String类。
StringBuffer
byte[] value;
- StringBuffer由可变数组组成, 可动态扩容, 默认容量16。
- StringBuffer是final类, 不可被继承。
- StringBuffer的方法是被synchronized关键字修饰的, 因此线程安全。
StringBuilder
byte[] value;
- StringBuilder 与 StringBuffer一样, 由可变字节数组构成。
- StringBuilder 方法未被synchronized关键词修饰, 因此线程不安全。
- StringBuilder比StringBuffer性能好。
历史版本
- 历史版本, 上述3类由字符数组构成: char[] value。