java源碼分析-String
重要指數:滿星,慢慢品。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence
首先類的聲明
沒有顯式繼承 Object ,但是jvm在加載類的時候發現沒有父類,自動引入Object 父類。
final 不能繼承 (方法種沒有set方法)
java.io.Serializable 這篇博客寫的很好 https://blog.csdn.net/dreamtdp/article/details/15378329
至於如何實現的後面有機會再說。至於為什麽String實現序列化呢,,我想基本類型對應的幾個類應該都會繼承(其他還沒看),因為你要序列化一個自定義類,類中的變量是String,Integer,,所以,,,
Comparable<T> 泛型實現,,後面會單獨寫泛型的,就是為了實現compareTo<String>
CharSequence 接口,,,應該是響應 抽象 的特征 ,,作為String StringBuilder StringBuffer的共同抽象體。顧名思義這三個都是 基於字符數組的。
成員變量
private final char value[];//數據倉庫
private int hash; //數據hash
private static final long serialVersionUID = -6849794470754667710L;//序列化的
private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];//應該是序列化相關的,
方法
前四個沒啥說的,,特殊點就是 用到了 Arrays.copyOf(value, value.length); Arrays.copyOfRange(value, offset, offset+count); 平常寫代碼可以多用,
看下這個,入參是 int[] codePoints,,關於codePoint 引入了 java使用utf-16編碼的,,https://www.cnblogs.com/simple-huang/p/8643799.html
其他都是為了方便使用者,大牛們封裝的方法。
值得深究的是 format 可單獨詳細說明一下。
format 中涉及到的Local一般出問題的時候才會想到這個。
java源碼分析-String