String原始碼總結

2021-08-09 04:35:04 字數 1091 閱讀 5893

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,所以有必要把這些...