1.indexof 方法
if (fromindex >= sourcecount)
if (fromindex < 0)
if (targetcount == 0)
char first = target[targetoffset];
int max = sourceoffset + (sourcecount - targetcount);
for (int i = sourceoffset + fromindex; i <= max; i++)
/* found first character, now look at the rest of v2 */
if (i <= max) }}
return -1;
這個方法中是進行暴力匹配 通過乙個while迴圈和乙個for迴圈來進行匹配找到字串的索引
注意:while for迴圈判斷 沒有迴圈體 true的話就再一次判斷 false跳出迴圈
2.intern() string物件 呼叫這個方法的時候 判斷有沒有常量池中有沒有這個字串 沒有就加入到常量池
詳解:主要是做記憶體優化的;
3codepointat(index) 這個方法返回的是乙個int值 eg: a->97
4.equals
這個方法中的
if (this == anobject)
if (anobject instanceof string)
return true;}}
return false;
中間while 迴圈的迴圈條件是 n--!=0 為什麼 呢 為什麼不直接用正面的i++
5.regionmatches
str.regionmatches(true, 0, anotherstring, 0, length);
第乙個引數 表示忽略大小寫
第二個 表示 str 從0位置開始比較
第三 另乙個字串
四 另乙個字串從0位置開始
五 比較的長度
6.hashcode
for (int i = 0; i < value.length; i++)
係數31
String原始碼閱讀總結
1 charat index 獲取字元 codepointat 提取索引字元 點 2 string 和 charsequence 關係 string 繼承於charsequence,也就是說string也是charsequence型別。charsequence是乙個介面,它只包括length cha...
String原始碼解析
string類被final修飾詞修飾,代表不可修改的特性,它實現了三個介面,serializable是序列化介面,compareble是排序介面,char是字串行介面。public final class string implements serializable,comparable,chars...
String原始碼分析
前言 string類在日常開發過程中使用頻率非常高,平時大家可能看過string的原始碼,但是真的認真了解過它麼,筆者在一次筆試過程中要求寫出string的equals方法,瞬間有點懵逼,憑著大致的理解,算是寫出來了,可是下來一翻string的原始碼頓悟,原來自己寫得是多麼的low,所以有必要把這些...