作为一名Java程序员,最常用的就是String了,虽然常用,但是了解只是皮毛,于是来补习一下
String的存储结构和一些重要方法
以主流的JDK 1.8为例,String的内部实际存储结构为 char 数组,源码如下
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
// 用于存储字符串的值
private final char value[];
// 用于缓存字符串的hash code
private int hash; // Default to 0
...
}
String有以下 4 个重要的构造方法
1.以String为参数的构造方法
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
2.以char []为参数的构造方法
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
3.以StringBuffer为参数的构造方法
public String(StringBuffer buffer) {
synchronized(buffer) {
this.value = Arrays.copyOf(buffer.getValue(), buffer.length());
}
}
4. 以StringBuilder为参数的构造方法
public String(StringBuilder builder) {
this.value = Arrays.copyOf(builder.getValue(), builder.length());
}
其中,比较容易被忽略的是以 StringBuffer 和 StringBuilder 为参数的构造函数