String類概述
String 類代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作爲此類的實例實現即Java程序中的所有字符串字面值都是String類的對象。
字符串是常量,它們的值在創建之後不能更改(若對字符串進行拼接("+")等操作時會創建新的對象)。因爲 String 對象是不可變的,所以可以共享。
String 類包括的方法可用於檢查序列的單個字符、比較字符串、搜索字符串、提取子字符串、創建字符串副本並將所有字符全部轉換爲大寫或小寫。
Java 語言提供對字符串串聯符號("+")以及將其他對象轉換爲字符串的特殊支持。字符串串聯是通過 StringBuilder(或 StringBuffer)類及其 append 方法實現的。字符串轉換是通過 toString 方法實現的,該方法由 Object 類定義,並可被 Java 中的所有類繼承。
構造方法
String類重載構造方法,且含空參構造。
目前學習常用的構造方法有:
public String(); 空參構造
舉例:
public class Demo4 {
public static void main(String[] args) {
String s = new String();
}
}
public String(String Original); 把字符串常量值轉換爲字符串,換句話說新創建的字符串是參數字符串的副本
舉例:
public class Demo4 {
public static void main(String[] args) {
String s = new String("hello,world");
}
}
結果:
hello,world
public String(byte[] bytes); 將字節數組轉換成字符串
舉例:
public class Demo4 {
public static void main(String[] args) {
byte[] bytes={'h','e','l','l','o'};
String s = new String(bytes);
System.out.println(s);
}
}
public String(byte[] bytes, int index, int length); 把字節數組的一部分轉換成字符串。index表示的是從第幾個索引開始,length表示的是長度
public class Demo4 {
public static void main(String[] args) {
byte[] bytes={'h','e','l','l','o'};
String s = new String(bytes,2,3);
System.out.println(s);
}
}
public String(char[] value); 把字符數組轉換成字符串
public class Demo4 {
public static void main(String[] args) {
char[] value={'a','b','c','d','e'};
String s = new String(value);
System.out.println(s);
}
}
public String(char[] value, int index, int count); 把字符數組的一部分轉換成字符串
public class Demo4 {
public static void main(String[] args) {
char[] value={'a','b','c','d','e'};
String s = new String(value,1,4);
System.out.println(s);
}
}
String類的判斷功能
有關於String類的判斷功能的方法有equals()、contains()、startsWith()、endsWith()等方法。
equals()方法:
String類重寫了Object類的equals()方法。該方法比較的是兩個字符串的內容是否相同,該方法區分大小寫。返回值爲boolean類型,即true或false。
將此字符串與指定的對象比較。當且僅當該參數不爲 null,並且是與此對象表示相同字符序列的 String 對象時,結果才爲 true。
equalsIgnoreCase()方法:
該方法比較的是兩個字符串的內容是否相同,不區分大小寫。如果兩個字符串的長度相同,並且其中的相應字符都相等(忽略大小寫),則認爲這兩個字符串是相等的。返回值爲boolean類型,即true或者false。
在忽略大小寫的情況下,如果下列至少一項爲 true,則認爲 c1 和 c2 這兩個字符相同。
- 這兩個字符相同(使用 == 運算符進行比較)。
- 對每個字符應用方法 Character.toUpperCase(char) 生成相同的結果。
- 對每個字符應用方法 Character.toLowerCase(char) 生成相同的結果。
contains()方法:
該方法用於判斷字符串中是否包含傳遞進來的字符串。返回值爲boolean類型。當且僅當此字符串包含指定的 char 值序列時,返回 true。
startsWith()方法:
該方法用於判斷字符串是否是以傳遞進來的字符串開頭。返回值爲boolean類型。
如果參數表示的字符序列是此字符串表示的字符序列的前綴,則返回 true;否則返回 false。還要注意,如果參數是空字符串,或者等於此 String 對象(用 equals(Object) 方法確定),則返回 true。
endsWith()方法:
該方法用於判斷字符串是否以傳遞進來的字符串結尾,返回值爲boolean類型。
如果參數表示的字符序列是此對象表示的字符序列的後綴,則返回 true;否則返回 false。注意,如果參數是空字符串,或者等於此 String 對象(用 equals(Object) 方法確定),則結果爲 true。
isEmpty()方法:
該方法用於判斷字符串是不是空串(字符串長度爲0),返回值爲boolean類型。
如果 length() 爲 0,則返回 true;否則返回 false。
String類的獲取功能
常用的String類的獲取功能有,獲取字符串的長度、索引、指定索引處的字符串等。
length()方法:
該方法返回字符串的長度。
charAt()方法:
該方法用於獲取指定索引位置的字符。
返回指定索引處的 char 值。索引範圍爲從 0 到 length() - 1。序列的第一個 char 值位於索引 0 處,第二個位於索引 1 處,依此類推,這類似於數組索引。
indexOf()方法:
該方法用於返回指定字符在此字符串中第一次出現處的索引。
在此對象表示的字符序列中第一次出現該字符的索引;如果未出現該字符,則返回 -1。
返回在此字符串中第一次出現指定字符處的索引,從指定的索引開始搜索。
返回在此對象表示的字符序列中第一次出現的大於或等於 fromIndex 的字符的索引;如果未出現該字符,則返回 -1。
該方法用於返回指定字符在此字符串中最後一次出現處的索引。
返回在此對象表示的字符序列中最後一次出現該字符的索引;如果未出現該字符,則返回 -1。
返回指定字符在此字符串中最後一次出現處的索引,從指定的索引處開始進行反向搜索。
返回在此對象表示的字符序列(小於等於 fromIndex)中最後一次出現該字符的索引;如果在該點之前未出現該字符,則返回 -1。
該方法用於返回指定字符串在此字符串中第一次出現處的索引。
如果字符串參數作爲一個子字符串在此對象中出現,則返回第一個這種子字符串的第一個字符的索引;如果它不作爲一個子字符串出現,則返回 -1。
返回指定子字符串在此字符串中第一次出現處的索引,從指定的索引開始。
返回指定子字符串在此字符串中最右邊出現處的索引。將最右邊的空字符串 “” 視爲出現在索引值 this.length() 處。
返回指定子字符串在此字符串中最後一次出現處的索引,從指定的索引開始反向搜索。
substring()方法
該方法從指定位置開始截取字符串,默認到末尾。
返回一個新的字符串,它是此字符串的一個子字符串。該子字符串從指定索引處的字符開始,直到此字符串末尾。
該方法從指定位置開始到指定位置結束截取字符串。
返回一個新字符串,它是此字符串的一個子字符串。該子字符串從指定的 beginIndex 處開始,直到索引 endIndex - 1 處的字符。因此,該子字符串的長度爲 endIndex-beginIndex。
String類的轉換功能
getBytes()方法:
該方法把字符串轉換成字節數組,將結果存儲到一個新的 byte 數組中。
toCharArray()方法:
該方法把字符串轉換爲字符數組。
valueOf()方法:
該方法把字符數組轉成字符串。
該方法把int類型的數據轉成字符串。
String類的valueOf方法可以把任意類型的數據轉成字符串。
toLowerCase()方法:
該方法把字符串轉成小寫。
toUpperCase()方法:
該方法把字符串轉成大寫。
concat()方法:
該方法進行字符串的拼接操作,將指定字符串連接到此字符串的結尾。
如果參數字符串的長度爲 0,則返回此 String 對象。否則,創建一個新的 String 對象,用來表示由此 String 對象表示的字符序列和參數字符串表示的字符序列連接而成的字符序列。
String類的其他常用功能
替換功能:
replace()方法:
將指定字符進行替換。
返回一個新的字符串,它是通過用 newChar 替換此字符串中出現的所有 oldChar 得到的。
將指定字符串進行替換。
使用指定的字面值替換序列替換此字符串所有匹配字面值目標序列的子字符串。該替換從字符串的開頭朝末尾執行,例如,用 “b” 替換字符串 “aaa” 中的 “aa” 將生成 “ba” 而不是 “ab”。
去除字符串兩空格:
trim()方法:
返回字符串的副本,忽略前導空白和尾部空白。
如果此 String 對象表示一個空字符序列,或者此 String 對象表示的字符序列的第一個和最後一個字符的代碼都大於 ‘\u0020’(空格字符),則返回對此 String 對象的引用。
否則,若字符串中沒有代碼大於 ‘\u0020’ 的字符,則創建並返回一個表示空字符串的新 String 對象。
返回的字符串移除了前導和尾部空白的副本;如果沒有前導和尾部空白,則返回此字符串。、
字符串的比較:
compareTo()方法:
該方法會對照ASCII 碼錶,從第一個字母進行減法運算,返回的就是這個減法的結果。
如果前面幾個字母一樣會根據兩個字符串的長度進行減法運算返回的就是這個減法的結果。
如果兩個字符串一模一樣,返回的就是0。
具體解釋:
按字典順序比較兩個字符串。該比較基於字符串中各個字符的 Unicode 值。按字典順序將此 String 對象表示的字符序列與參數字符串所表示的字符序列進行比較。如果按字典順序此 String 對象位於參數字符串之前,則比較結果爲一個負整數。如果按字典順序此 String 對象位於參數字符串之後,則比較結果爲一個正整數。如果這兩個字符串相等,則結果爲 0;compareTo 只在方法 equals(Object) 返回 true 時才返回 0。
如果沒有字符不同的索引位置,則較短字符串的字典順序在較長字符串之前。在這種情況下,compareTo 返回這兩個字符串長度的差,即值: this.length()-anotherString.length()。
compareToIgnoreCase()方法:
該方法的用法同compareTo()方法的用法,只不過忽略了字符串中的大小寫。