黑馬程序員-第十一天(String類)

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------

一,字符串最大的特點:一旦被初始化就不可以改變。
二,equals():  Object中是比較的兩個變量的內存地址值,而在String類中複寫了Object中的方法。該方法用於判斷字符串是否相同。
三。String s1 = "abc" 和 String s2 = new String("abc")的區別?
s1是有一個對象“abc”。s2是有兩個對象。new String()和"abc"
注:當String s3 = "abc"時,s1 == s3是成立的原因如下 :
當在常量池中出現已經存在的常量時,因爲常量已經不能被改變所以。就不會在開闢新的空間的,而是直接指向它。
四。對字符串的常見操作。
1.獲取:
1.1 字符串中的包含的字符數,也就是字符串的長度。
int length():獲取長度
1.2 根據位置獲取位置某個字符
char charAt(int index);如果index超出字符串的範圍,會拋出StringIndexofBoundsException
1.3根據字符獲取字符在字符串中的位置。
int indexOf(int ch):返回的是ch在字符串中第一次出現的位置。如果沒有找到要找的字符,會返回-1
int indexOf(int ch,int fromIndex):從fromIndex指定位置的開始,獲取ch在字符串中出現的位置。
int indexOf(String str):返回的是str在字符串中第一次出現的位置。
int indexOf(String str,int fromIndex):從fromIndex指定位置的開始,獲取str在字符串中出現的位置。
反向索引
int lastIndexOf(int ch);
int lastIndexOf(int ch,int fromIndex);
int lastIndexOf(String str);
int lastIndexOf(String str,int fromIndex);
2,判斷
2.1 判斷字符串是不是以指定的字符串開始:boolean startsWith(String prefix)
2.2 判斷字符串是不是以指定的字符串結尾:boolean endsWith(String end); 
2.3 判斷字符串是不是有內容:boolean isEmpty(); JDK1.6版本開始  就是判斷是length()的值是不是爲0
2.4  判斷字符串是不是包含某一個子串:
boolean contains(CharSequence str):其中CharSequence是一個字符序列接口已知子類String ,StringBuffer等。父類引用指向子類對象。
編譯時看父類,運行時看子類。

特殊之處:indexOf(String str):可以索引str第一次出現位置,如果返回-1表示str不在字符串存在,所以,也可以用於判斷是否包含指定的子串。而且該方法即可以判斷,又可以獲取位置。
2.5 判斷字符串內容是否相同,複寫了Object類中的equals方法
boolean equals(Object str)
2.6 判斷字符串內容是否相同,並忽略大小寫。
boolean equalsIgnorecCase();

3.轉換
3.1將字符數組轉換成字符串
構造函數
String(char[] value) 將字符數組轉換成字符串。
String(char[] value ,int offset,int count)將字符數組中的一部分轉換成字符串。
靜態方法
static String copyValueOf(char[] value)將字符數組轉換成字符串。
static String copyValueOf(char[] value,int offset,int count)將字符數組中指定的部分轉換成字符串。
static String valueOf(char[] value)將字符數組轉換成字符串。
3.2將字符串轉換成字符數組
char[] toCharArray():將字符串變成字符數組。

3.3將字節數組轉換成字符串(字符串和字節數組在轉換過程中,是可以指定編碼表的)
構造函數
String(byte[] bytes)
String(byte[] bytes,int offset,int count)將字節數組中指定的一部分轉換成字符串。
String(byte[] bytes,Charset charset);通過指定的charset解碼指定的byte數組,構造一個新的string

3.4將字符串轉換成字節數組。
byte[] getBytes():將字符串轉換成字節數組。
3.5copyValueOf和valueOf方法的區別?
valueOf可以將基本數據類型轉換成字符串。
4,替換

4.1替換字符
String replace(char oldChar,char newChar)將newChar替換oldChar並返回替換後新的字符串(替換所有與oldChar相同的字符)。
如果要替換的字符不存在的,返回的還是原來的字符串。如:
String s1 = "hellow";
String s2 = s1.replace('l','a');
打印s2的結果:爲 heaaow   打印s1爲hellow原因:字符串一但被初始化就不會被改變。replace(char,char)方法
會返回一個新一個字符串。
4.2,替換字符串
String replace(CharSequence oldString, CharSequence newString):替換字符串。字符串是CharSequence接口類的一個已知子類。

按照指定的規則(正則表達式)進行替換:
String replaceAll(String regex(正則表達式),String replacement)使用給定的replacement替換此字符串所有匹配給定的正則表達式的子字符串
String replaceFirst(String regex,String replacement)使用給定的replacement替換此字符串所有匹配給定的正則表達式的第一個子字符串
5,切割
String[] split(String regex):根據字符格式進行切割。
如:String str ="heabcde",String[] arr = str.split("he")此時會有兩個字串,一個空串,一個"abcde"字符串。
6,獲取子串(當角標找不到時會發生角標越界異常)
String substring(int beginIndex);從指定的位置到結尾都有。注:此方法是調用substring(int beginIndex,string.length())
String substring(int beginIndex,int endIndex);包括頭不包括尾。
7.轉換
7.1將字符串轉成大寫或小寫
轉成大寫:
String toUpperCase();
轉成小寫:
String toLowerCase();
7.2將字符串兩端的多個空格進行去除(覺應用於:用戶名,密碼的輸入)
String trim();
7.3對兩個字符串進行自然順序的比較
int compareTo(String string)
當返回的整數大於0時說明this所指的字符串大於參數中的字符串(根據的是Ascll碼錶進行比較),等於則兩個
字符串相等,小於0則this所指的字符串小於參數中的字符串。

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------

發佈了48 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章