解答:
因爲 String 在通過 new 的構造方式實例化的時候,在底層會用一個 private final 修飾的字符數組來存儲字符串,該字符數組用了 final 來修飾所以是不可變的。
public final class String implements Serializable, Comparable<String>, CharSequence {
private final char[] value; // 用 final 修飾的字符數組存儲字符串
private int hash;
private static final long serialVersionUID = -6849794470754667710L;
public String() {
this.value = "".value;
}
public String(String var1) {
this.value = var1.value;
this.hash = var1.hash;
}
public String(char[] var1) {
this.value = Arrays.copyOf(var1, var1.length);
}
......
}
面試問題:String 類是用什麼數據結構來存儲字符串的?
由上面 String 的源碼可見,String 類是用數組的數據結構來存儲字符串的。