作为一名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 为参数的构造函数