1. 程式人生 > >java源碼分析-String

java源碼分析-String

com ray builder image class oca csdn 說明 pyo

重要指數:滿星,慢慢品。

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