String jdk原始碼檢視

2021-08-31 06:34:30 字數 2431 閱讀 6548

string:

string共有15個建構函式 可以有string ,byte,char,stringbuffer,int

string類使用了final修飾符:final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,預設都是final的。在設計類時候,如果這個類不需要有子類,類的實現細節不允許改變,並且確信這個類不會載被擴充套件,那麼就設計為final類 如果乙個類不允許其子類覆蓋某個方法,則可以把這個方法宣告為final方法。

使用final方法的原因有二:

第一、把方法鎖定,防止任何繼承類修改它的意義和實現。

第二、高效。編譯器在遇到呼叫final方法時候會轉入內嵌機制,大大提高執行效率。

實現了serializable, comparable, charsequence介面

comparable: compareto()

在string的compareto實現中:

//anotherstring 比較的字串

public int compareto(string anotherstring)

k++;

}} else }}

return len1 - len2; //原始物件和比較物件的長度之差 如果為0就表示相等

} charsequence:

length() 在string中的實現

public int length()

charat()在string中的實現

public char charat(int index)

return value[index + offset];

}subsequence():在string中的實現

public charsequence subsequence(int beginindex, int endindex)

string中的substring方法實現:

public string substring(int beginindex, int endindex)

if (endindex > count)

if (beginindex > endindex)

return ((beginindex == 0) && (endindex == count)) ? this :

new string(offset + beginindex, endindex - beginindex, value); //從中可以看出 當我們使用的substring方法時還是重新new 物件所有效率不是太高.

}tostring()在string類中的實現

public string tostring()

indexof()在string類中的實現:

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++)

/* found first character, now look at the rest of v2 */

if (i <= max) }}

return -1;

}string類中的equlas()

public boolean equals(object anobject)

if (anobject instanceof string)

return true;}}

return false;

}講講object類中的equlas()

public boolean equals(object obj)

object類中的tostring()

public string tostring()

---------------

自定義異常:

stringindexoutofbound***ception檢視原始碼可知

public class stringindexoutofbound***ception extends indexoutofbound***ception

public stringindexoutofbound***ception(string s)

public stringindexoutofbound***ception(int index)

}假設現在有乙個我們自己的異常可以從exception繼承

PageHelper 檢視原始碼

原始碼分析 首先進入到分頁外掛程式 一步一步檢視原始碼,關鍵點在於這裡settotal 當你分頁的資料 超過總資料,正常我們寫sql 是返回空,但是通過外掛程式返回的是前面的資料。通過settotal 發現 pagesize 大於0 但是pages int total pagesize total ...

opencv原始碼檢視

1 針對opencv自帶的函式 cv.h中宣告的函式 可直接選擇函式,右鍵轉到宣告 h檔案 或轉到定義 cpp檔案 2 source modules下的函式不能直接跳轉到定義,需要先編譯,此處用cmake編譯原始碼 a 安裝,官網中包括源 sources 需自己編譯 和二進位制檔案 已編譯好 此處選...

LinkedList原始碼檢視

繼承abstractsequentiallist,實現list deque介面.transient int size 0 transient nodefirst transient nodelast addall int index,collection 函式的功能 將指定 collection 中...