1 . 常用方法
boolean equalsIgnoreCase(String str)
判斷兩個字符串中的 內(nèi)容是否相同 , 忽略大小寫
boolean contains(String str)
判斷該字符串中 是否 包含 給定的字符串
boolean isEmpty()
判斷該字符串的內(nèi)容 是否為空 的字符串 ""
int length()
獲取該字符串的長度
char charAt(int index)
獲取該字符串中指定位置上的字符
String substring(int start)
從指定位置開始索引,到末尾結(jié)束,截取該字符串,返回新字符串
int indexOf(String str)
獲取給定的字符串,在該字符串中第一次出現(xiàn)的位置
byte[] getBytes()
把該字符串轉(zhuǎn)換成 字節(jié)數(shù)組
char[] toCharArray()
把該字符串轉(zhuǎn)換成 字符數(shù)組
String trim()
去除字符串兩端空格,中間的不會去除,返回一個新字符串
String toLowerCase()
把該字符串轉(zhuǎn)換成 小寫字符串 ,返回一個新字符串
String toUpperCase()
把該字符串轉(zhuǎn)換成 大寫字符串,返回一個新字符串
String replace(String old,String new)
在該字符串中, 將給定的舊字符串,用新字符串替換 ,返回一個新字符串
2 . String StringBuffer 和 StringBuilder 的區(qū)別
每次對 String 類型進行改變的時候 ,都會生成一個新的 String 對象 ,然后將 指針指向新的 String 對象 。StringBuffer 每次都會對 StringBuffer 對象本 身進行操作 ,而不是生成新的對象并改變對象引用 。相同情況下使用 StringBuilder 相比使用 StringBuffer 僅能獲得 10%~15% 左右的性能提升 , 但卻要冒多線程不安全的風險 。
public StringBuffer append(String str)
在原有字符串緩沖區(qū)內(nèi)容基礎上,在末尾追加新數(shù)據(jù),不會產(chǎn)生新的字符串
public StringBuffer insert(int offset,String str)
在原有字符串緩沖區(qū)內(nèi)容基礎上,在指定位置插入新數(shù)據(jù)
public StringBuffer deleteCharAt(int index)
在原有字符串緩沖區(qū)內(nèi)容基礎上,刪除指定位置上的字符
public String substring(int start)
從指定位置開始,到末尾結(jié)束,截取該字符串緩沖區(qū),返回新字符串
對于三者使用的總結(jié) :
操作少量的數(shù)據(jù): 適用String
單線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù): 適用StringBuilder
多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù): 適用StringBuffer
3 . 補充細節(jié)
不要在 foreach 循環(huán)里進行元素的 remove/add 操作
可以調(diào)用迭代器的 remove 方法而不是集合類的 remove 方法
//正例
List<String> list =new ArrayList<>();
list . add("1");
list . add("2");
Iterator<String> iterator = list . iterator;
while (iterator . hasNext()){
String item = iterator . next();
if(條件){
iterator . remove()
}
}
更多內(nèi)容資料 公眾號:天堂比不過家鄉(xiāng)
親 ,別忘了 贊助關(guān)注哦!??!