java原始碼分析(3) String(2)

2021-07-12 02:16:48 字數 2029 閱讀 6823

substring方法用於對字串的擷取,在資料的傳遞過程中使用的十分普遍,但消耗的效能較大,建議能不用盡量不用。

public string substring(int beginindex) 

int sublen = value.length - beginindex;

if (sublen < 0)

return (beginindex == 0) ? this : new string(value, beginindex, sublen);//當傳入的開始下標符合且不為0時,新建乙個string,注意這個string的值並沒有變化,只是改變了偏移量

}public string substring(int beginindex, int endindex)

if (endindex > value.length)

int sublen = endindex - beginindex;

if (sublen < 0)

return ((beginindex == 0) && (endindex == value.length)) ? this

: new string(value, beginindex, sublen);//與上面的方法類似,沒有改變string的value屬性,只是而是

改變了偏移量和count長度。

}

public string replace(char oldchar, char newchar) 

}if (i < len)

while (i < len)

return new string(buf, true);}}

return this;

}

static int indexof(char source, int sourceoffset, int sourcecount,

char target, int targetoffset, int targetcount,

int fromindex)

if (fromindex < 0)

if (targetcount == 0)

char first = target[targetoffset];

int max = sourceoffset + (sourcecount - targetcount);//先設定乙個最大的源字串的下標,可以節省迴圈次數

for (int i = sourceoffset + fromindex; i <= max; i++)

if (i <= max) }}

return -1;

}

public string split(string regex, int limit)  else 

}if (off == 0)

return new string;//若字串中不存在擷取符,則直接返回原字串

// add remaining segment

if (!limited || list.size() < limit)

list.add(substring(off, value.length));

// construct result

int resultsize = list.size();

if (limit == 0)

while (resultsize > 0 && list.get(resultsize - 1).length() == 0)//將list中的空位去除,並返回最後乙個值的下標

resultsize--;

string result = new string[resultsize];

return list.sublist(0, resultsize).toarray(result);//擷取list的中所有有效地值,將之放入string陣列後返回中

}return pattern.compile(regex).split(this, limit);

}

java原始碼分析

在往佇列中插入資料由下面幾個函式,他們的區別就是對佇列滿的情況處理不同 put 一直等待著 offer 無時間 如果空了直接返回false offer 有時間 等待指定的時間,在指定時間內如果空了,那麼插入,負責返回false add 丟擲乙個illegalstateexception異常 首先來看...

《Java原始碼分析》 LinkedHashMap

public class linkedhashmap extends hashmap implements map從結構可以看出,linkedhashmap繼承hashmap並實現了map介面。下面幾個是linkedhashmap的建構函式,每個建構函式都是直接呼叫父類hashmap的建構函式來完成...

uboot原始碼分析(3)

正式開始了第二階段 relocate部分的 負責把u boot stage2的 從flash儲存器載入到記憶體,如下 163 ifndef config skip relocate uboot 164relocate 165 adr r0,start 獲取當前 存放位址 00000000 166 l...