1、string類是final的,不允許被繼承
1/**the value is used for character storage. */2
private
final
char
value;34
/**cache the hash code for the string */5
private
int hash; //
default to 0
string類的內部就是維護了乙個char陣列;
2、構造方法,只需要看兩個接受char陣列的構造方法
1public string(char
value) 45
public string(char value, int offset, int
count)
9if (count < 0)
12//
note: offset or count might be near -1>>>1.
13if (offset > value.length -count)
16this.value = arrays.copyofrange(value, offset, offset+count);
17 }
這兩個構造方法都用到了,arrays工具類的copyof方法,在這兩個方法裡面都呼叫了system.arraycopy方法;
因為system.arraycopy是乙個系統本地方法,所以這個方法的效率很高,所以在構造string的時候效率也很高;
3、常用的length,charat方法
通過第一條,很容易知道,這兩個方法,實際上就是在操作char陣列
1public
intlength() 45
public
boolean
isempty() 89
public
char charat(int
index)
13return
value[index];
14 }
4、getbytes方法
呼叫了stringcoding.encode方法,encode方法呼叫另外乙個過載的方法
1static
byte encode(char ca, int off, int
len) catch
(unsupportedencodingexception x)
9try
catch
(unsupportedencodingexception x)
21 }
得到乙個位元組陣列,是由iso-8859-1編碼得到,當然也可以用其他編碼
5、compareto方法
因為string實現了comparable介面,所、所以必須實現compareto方法
1public
intcompareto(string anotherstring)
15 k++;16}
17return len1 -len2;
18 }
其實是遍歷的比較兩個陣列
JDK原始碼解析 String類
equals方法相信大家都比較熟悉和了解了,string的equals方法主要用來比較string物件內容序列的異同,原始碼如下 public boolean equals object anobject 判斷是否是string型別 if anobject instanceof string ret...
JDK中String類的原始碼分析 二
1 startswith string prefix,int toffset 方法 包括startswith endswith 方法,都是呼叫上述乙個方法 1 public boolean startswith string prefix,int toffset 11while pc 0 15 16...
JDK 10 原始碼之String類
一 成員變數 1 stable 表示安全,該欄位不會為null。private final byte value 位元組陣列儲存字串的值 2 cache the hash code for the string private int hash default to 0 3 private fina...