分析:
1、
privatefinal
char
value;
string內部由這個char陣列維護string的字元。首先string類用final修飾,不可繼承,其次,value用 fianl修飾,代表引用不可變。
public
string()
當呼叫無參構造方法時,將char陣列初始化為char[0]。
2、 string中的codepoint
codepoint 舉例來說: 「我」->對應的codepoint 為十進位制的25105->十六進製制的6211->unicode編碼表中的6211(「我」字在unicode編碼表中對應的16進製制數)
3、
publicbyte
getbytes(string charsetname)
throws
unsupportedencodingexception
根據某編碼格式編碼
4、equals方法
publicboolean
equals(object anobject)
if (anobject instanceof
string)
return
true
; }
}return
false
; }
5、測試兩個字串區域是否相等。
publicboolean regionmatches(int toffset, string other, int
ooffset,
intlen)
while (len-- > 0)
}return
true
; }
6、hashcode
返回此字串的雜湊碼。string
物件的雜湊碼根據以下公式計算:
使用s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
int
演算法,這裡s[i]
是字串的第 i 個字元,n
是字串的長度,^
表示求冪。(空字串的雜湊值為 0。)
publicinthashcode()
hash =h;
}return
h; }
7、擷取子串,返回的是new 的string
public string substring(intbeginindex)
int sublen = value.length -beginindex;
if (sublen < 0)
return (beginindex == 0) ? this : new
string(value, beginindex, sublen);
}
8、字串拼接,返回的時new string,所以不建議多次拼接,多次拼接請選stringbuffer
publicstring concat(string str)
int len =value.length;
char buf = arrays.copyof(value, len +otherlen);
str.getchars(buf, len);
return
new string(buf, true
); }
9、valueof方法要注意,如果傳進來的字串為null,則會自動new string("null")返回,否則返回物件.tostring()
publicstatic
string valueof(object obj)
10、intern()方法分析
返回字串物件的規範化表示形式。
乙個初始時為空的字串池,它由類 string 私有地維護。
當呼叫 intern 方法時,如果池已經包含乙個等於此 string 物件的字串(該物件由 equals(object) 方法確定),則返回池中的字串。否則,將此 string 物件新增到池中,並且返回此 string 物件的引用。
它遵循對於任何兩個字串 s 和 t,當且僅當 s.equals(t) 為 true 時,s.intern() == t.intern() 才為 true。
所有字面值字串和字串賦值常量表示式都是內部的。
返回:
乙個字串,內容與此字串相同,但它保證來自字串池中。
希望深入了解的看我的這篇文章:
String原始碼分析
前言 string類在日常開發過程中使用頻率非常高,平時大家可能看過string的原始碼,但是真的認真了解過它麼,筆者在一次筆試過程中要求寫出string的equals方法,瞬間有點懵逼,憑著大致的理解,算是寫出來了,可是下來一翻string的原始碼頓悟,原來自己寫得是多麼的low,所以有必要把這些...
原始碼分析之String
先看屬性 底層是char陣列,一目了然 可以看到,value是儲存string的內容的,即當使用string str abc 的時候,本質上,abc 是儲存在乙個char型別的陣列中的。string底層的儲存結構是乙個字元型別的陣列,同樣也是被final修飾,因此一旦這個字元陣列被建立後,value...
STL原始碼分析 string
從定義可知,string其實是base string的特化類,string使用預設的記憶體分配器 stl default allocator chart template class alloc stl default allocator chart class basic string typed...