昨天參加了一場機試,發現自己居然對String類的api不熟了,所以今天來總結一下(基于JDK1.8)。
1、父類和實現的接口
沒有父類,或者說父類是Object
接口:Serializable、Comparable<String>、CharSequence
2、數據結構
底層是一個字符數組,并且底層數組不能被其他類訪問,從源碼可以看出
private final char value[];
并且String實例不可被更改,意思就是說上面這個字符數組的長度和存儲的字符都不能變,因為String類中除了構造方法沒有其他方法去改變這個字符數組value。
3、構造方法
構造方法入參主要有字符串、字符數組、字節數組、int數組、數組起始下標和數量、StringBuffer、字符集
4、常用方法
方法 | 說明 |
---|---|
length | 返回字符數組的長度 |
isEmpty | 字符數組長度是否為0 |
charAt | 返回指定索引位置的字符 |
codePointAt | 返回指定索引位置的Unicode代碼 |
getChars | 將字符串的內容放到指定的字符數組中 |
getBytes | 返回一個字節數組 |
equals | 內容是否相同 |
equalsIgnoreCase | 忽略大小寫之后內容是否相同 |
contentEquals | 內容是否相同 |
compareTo | 字符串大小比較 |
compareToIgnoreCase | 忽略大小寫之后字符串大小比較 |
startsWith | 檢查是否以指定的前綴開始(如果有第二參數表示開始查找的位置) |
endsWith | 檢查是否以指定的后綴結束 |
indexOf | 返回指定字符(或者字符串)在當前字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1 |
lastIndexOf | 同indexOf的區別是從后往前找 |
substring | 截取子串 |
replace | 注意replace、replaceAll、replaceFirst的區別 |
split | 將字符串用指定字符串分割成一個字符串數組 |
toLowerCase | 轉換成小寫 |
toUpperCase | 轉換成大寫 |
trim | 去除首尾Unicode值小于32的字符 |
toCharArray | 返回字符數組 |
valueOf | 將其他類型數據轉換成一個字符串 |
?