天天看點

String類

1.1.2.1 一些關于判空的差別

​ 1為空字元串,當使用isempty();方法判空時為true;

​ 2為空格字元串,使用isempty();方法判空時為flase;由此可見空格也算字元。

​ 3使用isempty();方法時會出現空指針異常。

​ 1即使為空但在常量池中任然存在,3為null空對象,是以在記憶體中沒有任何位址。

​ 調用touppercase()和tolowercase()并不會改變aa本身的值,而是建立一片記憶體複制原字元串後進行操作,若次數太多會造成資源占用過多。

​ 由此可見string底層是一個char類型的數組,charat()方法可以根據下标傳回對應的字元。

​ 傳回字元串内第一個對應字元的下标,找不到傳回-1,第二個參數為從第幾位開始查找。

​ 相應的該方法傳回字元串内倒數第一個對應的字元的下标。

​ substring()方法當隻有一個參數時,從該參數所指下标開始截取字元串。第二個參數位終止截取時的下标。

​ 查詢字元串中是否含有參數字元,傳回布爾類型。

​ 兩者都将對應字元串替換為後面的字元串,差別在于replaceall()需要經過正規表達式的判斷。

​ concat()方法用于拼接字元串。從輸出結果看concat()方法與字元串相加所實作的效果是一樣的.

​ 第二部分可以看出,concat()方法并不會改變字元串aa上值,而是像上面touppercase()方法一樣重新開辟一個記憶體并複制過去原字元串進行拼接操作,過多進行此操作會占用不必要的記憶體,也可以說string是不能改變的,因為改變會造成資源浪費。

​ 按照指定字元串進行分割,傳回值為string數組

​ tirm()方法用于去除字元串首尾的空格

​ 比較大小,底層比較ascii值,前者區分大小寫,後者不區分大小寫