字串的學習,有的同學就看看api,記下方法,有的同學看看源**,還有的同學畫畫圖,自然學的深度是不一樣的。
/**
/** cache the hash code for the string */
private int hash; // default to 0
string物件的字元內容是儲存在乙個字元陣列中的。
private意味著外面無法直接獲取字元陣列,而且string沒有提供value的get和set方法,
final意味著字元陣列的引用不可改變,即通過讓value指向新的陣列物件來實現修改string物件,
而且string也沒有提供方法來修改value陣列某個元素值,因此字串的字元陣列內容也不可變。
疑問?那麼字串的拼接、字串的擷取、字串的替換等操作是如何實現的呢?
每次修改都建立乙個新的char陣列表示修改結果。
3、string物件的建立
string str = 「hello」;
string s1 = new string(); // 本質上 this.value = new char[0];
string s2 = new string(string original); = original.value;
string s3 = new string(char a); = arrays.copyof(value, value.length);
string s4 = new string(char a,int startindex,int count)
…4、字串物件是如何儲存的
字串常量儲存在字串常量池,目的是共享
字串非常量物件儲存在堆中。
5、string的拼接
結論:常量與常量的拼接結果在常量池
只要其中有乙個是變數,結果就在堆中
如果拼接的結果呼叫intern()方法,就在常量池中
6、string物件的比較
==比較的是位址。
equals比較的是字串的內容,重寫了object的equals方法。
10.2.2 string類的常用方法
1、常用方法系列之一
int length():返回字串的長度: return value.length;
boolean isempty():判斷是否是空字串:return value.length == 0;
string tolowercase():使用預設語言環境的規則將此 string 中的所有字元都轉換為小寫。
string touppercase():使用預設語言環境的規則將此 string 中的所有字元都轉換為大寫。
string trim():返回字串的副本,忽略前導空白和尾部空白。
boolean equals(object obj):比較字串的內容
boolean equalsignorecase(string anotherstring):與equals方法類似,忽略大小寫
string concat(string str):將指定字串連線到此字串的結尾。 等價於用「+」
2、string類和字元相關操作
char charat(int index): 返回某索引處的字元return value[index];
char tochararray():將此字串轉換為乙個新的字元陣列
string(char value):分配乙個新的 string,使其表示字元陣列引數中當前包含的字串行。
string(char value, int offset, int count):分配乙個新的 string,它包含取自字元陣列引數乙個子陣列的字元。
3、string類位元組與字串操作方法
編碼:把字元–>位元組
byte getbytes():使用平台的預設字符集將此 string 編碼為 byte 序列,並將結果儲存到乙個新的 byte 陣列中。
byte getbytes(charset charset) :使用給定的 charset 將此 string 編碼到 byte 序列,並將結果儲存到新的 byte 陣列。
byte getbytes(string charsetname) :使用指定的字符集將此 string 編碼為 byte 序列,並將結果儲存到乙個新的 byte 陣列中。
解碼:把位元組–>字元
string(byte bytes) :通過使用平台的預設字符集解碼指定的 byte 陣列,構造乙個新的 string。
string(byte bytes, charset charset):通過使用指定的 charset 解碼指定的 byte 陣列,構造乙個新的 string。
string(byte bytes, int offset, int length) :通過使用平台的預設字符集解碼指定的 byte 子陣列,構造乙個新的 string。
string(byte bytes, int offset, int length, charset charset):通過使用指定的 charset 解碼指定的 byte 子陣列,構造乙個新的 string。
string(byte bytes, int offset, int length, string charsetname):通過使用指定的字符集解碼指定的 byte 子陣列,構造乙個新的 string。
string(byte bytes, string charsetname):通過使用指定的 charset 解碼指定的 byte 陣列,構造乙個新的 string。
4、string類判斷是否以指定內容開頭或結尾
boolean endswith(string suffix):測試此字串是否以指定的字尾結束。
boolean startswith(string prefix):測試此字串是否以指定的字首開始。
boolean startswith(string prefix, int toffset):測試此字串從指定索引開始的子字串是否以指定字首開始。
5、string類字串查詢操作
boolean contains(charsequence s):當且僅當此字串包含指定的 char 值序列時,返回 true。
int indexof(int ch):返回指定字元在此字串中第一次出現處的索引。
int indexof(int ch, int fromindex):返回在此字串中第一次出現指定字元處的索引,從指定的索引開始搜尋。
int indexof(string str):返回指定子字串在此字串中第一次出現處的索引。
int indexof(string str, int fromindex):返回指定子字串在此字串中第一次出現處的索引,從指定的索引開始。
int lastindexof(int ch):返回指定字元在此字串中最後一次出現處的索引。
int lastindexof(int ch, int fromindex):返回指定字元在此字串中最後一次出現處的索引,從指定的索引處開始進行反向搜尋。
int lastindexof(string str):返回指定子字串在此字串中最右邊出現處的索引。
int lastindexof(string str, int fromindex):返回指定子字串在此字串中最後一次出現處的索引,從指定的索引開始反向搜尋。
indexof和lastindexof方法如果未找到都是返回-1
6、string類字串擷取操作
string substring(int beginindex)
返回乙個新的字串,它是此字串的從beginindex開始擷取到最後的乙個子字串。
string substring(int beginindex, int endindex)
返回乙個新字串,它是此字串從beginindex開始擷取到endindex(不包含)的乙個子字串。
7、string類是否匹配正則
boolean matches(string regex):告知此字串是否匹配給定的正規表示式。
8、string類替換操作
string replace(char oldchar, char newchar):
返回乙個新的字串,它是通過用 newchar 替換此字串**現的所有 oldchar 得到的。
string replace(charsequence target, charsequence replacement):
使用指定的字面值替換序列替換此字串所有匹配字面值目標序列的子字串。
string replaceall(string regex, string replacement):
使用給定的 replacement 替換此字串所有匹配給定的正規表示式的子字串。
string replacefirst(string regex, string replacement):
使用給定的 replacement 替換此字串匹配給定的正規表示式的第乙個子字元
9、string類字串拆分操作
string split(string regex):根據給定正規表示式的匹配拆分此字串。
string split(string regex, int limit):根據匹配給定的正規表示式來拆分此字串,最多不超過limit個,如果超過了,剩下的全部都放到最後乙個元素中。
String字串類實現
1 class string 2 建構函式string string const char str else string str hell0 3 析構函式string string 4 拷貝構造string string const string other string s1 hello str...
關於字串 string類
1 字串 字串是儲存在記憶體的連續位元組中的一系列字元。儲存在連續位元組中的一系列字元意味著可以將字串儲存在char陣列中,其中每個字元都位於自己的陣列元素中。什麼時候char陣列是string型別?char dog 8 not a string char cat 8 a string 只有第二個陣...
String字串工具類
1 using system 23 namespace sam.oa.common425 26 處理字串 27 28 字串29 30 public static string processstring object obj 3134 35 判斷字串是否為日期 36 37 日期字串 38 39pub...