1、charat(index) 獲取字元 , codepointat()——提取索引字元**點;
2、string 和 charsequence 關係
string 繼承於charsequence,也就是說string也是charsequence型別。
charsequence是乙個介面,它只包括length(), charat(int index), subsequence(int start, int end)這幾個api介面。除了string實現了charsequence之外,stringbuffer和stringbuilder也實現了charsequence介面。
需要說明的是,charsequence就是字串行,string, stringbuilder和stringbuffer本質上都是通過字元陣列實現的!
關係圖:
charsequence(介面)
string abstractstringbuilder(介面)
stringbuilder stringbuffer
3、contentequals(charsequence c) 、contentequals(stringbuffer sb) ;
也就是說string可以和stringbuilder、stringbuffer比較內容,還可以和實現charsequence介面的模擬較內容;
4、equalsignorecase(string anotherstring) 忽略字串大小寫比較;
5、compareto(string anotherstring)排序預設大的在前面,長度長的前面如果一樣,算大的;
string.case_insensitive_order 這個排序物件,忽略大小寫;
public int compareto(string anotherstring)
k++;
}return len1 - len2;
}測試例子:
/**
* 字串string不可變的字串,內部實現是基於char陣列,
* 1、因為只能內部訪問,所以不可變;
* 2、final類
* 3、如何實現乙個不可變類
a、將類宣告為final,所以它不能被繼承。
b、將所有的成員宣告為私有的,這樣就不允許直接訪問這些成員。
c、對變數不要提供setter方法。
d、將所有可變的成員宣告為final,這樣只能對它們賦值一次。
e、通過構造器初始化所有成員,進行深拷貝(deep copy)。
f、在getter方法中,不要直接返回物件本身,而是轉殖物件,並返回物件的拷貝。
* 4、其他的方法有,equals tolowercase split format格式化字串,可以動態的拼接字串,比如 數字 特殊字元什麼的。
* @author hz16092620
* @date 2023年4月4日 下午4:59:21
* @version
*/public class testbasestring
/*** 比較字串大小
* */
static void teststringadd()
/*** 測試trim。
* intern方法是native呼叫,它的作用是在方法區中的常量池裡通過equals方法尋找等值的物件,
* 如果沒有找到則在常量池中開闢一片空間存放字串並返回該對應string的引用,
* 否則直接返回常量池中已存在string物件的引用。
* */
static void testintern()
/*** 測試trim。
* */
static void testtrim()
/*** 測試replace。
* */
static void testreplace()
/*** 測試開頭和結尾的字元。
* */
static void teststartsandendwith()
/*** 測試拼接方法。
* */
static void testcontact()
/*** 測試++,後面的話就是先返回再計算。
* */
static void testadd()
/*** 測試charat方法、indexof。
* */
static void test()
/*** charsequence和三個實現類
*/ static void testcharsequence()
}
/**
* 字串操作的高階方法
* @author hz16092620
* @date 2023年4月8日 下午3:36:34
* @version
*/public class testseniorstring
/*** 測試字串是否回文,即前後讀都是一樣的
* */
static void teststringbuilderreverse()
} }
/*** 去除重複的字串/字元,原理就是利用stringbuilder可變的特性
* */
static void testdeleterepeatchar() }}
system.out.println(sb.tostring());
}/**
* 將兩個字串拼接,刪除
* */
static void teststringbuilder()
/*** 去除空格,方法一。
* */
static void testtrimsenior()
system.out.println(sb.tostring());
}/**
* 去除空格,方法二。
* */
static void testtrimreplaceall()
}
String原始碼閱讀(三)
public string split string regex,int limit else if no match was found,return this if off 0 return new string 如果limit大於最大返回長度,上面else中的 不會執行,在此處將最後一段放入l...
String原始碼總結
1.indexof 方法 if fromindex sourcecount if fromindex 0 if targetcount 0 char first target targetoffset int max sourceoffset sourcecount targetcount for ...
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...