String的常用方法:
1 public static void main(String[] args) { 2 String str = "Hello world!"; 3 // 獲取字符串的長度 4 Integer lenth = str.length(); 5 6 // 返回指定字符在此字符串中第一次出現處的索引 -- 從0開始 7 Integer index = str.indexOf("l"); 8 9 // 返回在此字符串中第一次出現指定字符處的索引,從指定的索引開始搜索。 10 Integer index2 = str.indexOf("l", 5); 11 12 // 從指定位置開始,截取到最后的字符串返回 13 String substr1 = str.substring(3); 14 15 // 從指定位置開始到指定位置結束,截取字符串返回 16 String substr2 = str.substring(3, 9); 17 18 // 返回去除字符串前后空格后的字符串 19 String str2 = str.trim(); 20 21 // 返回指定位置的char字符 22 char str3 = str.charAt(5); 23 24 // 返回此字符串是否以指定的前綴開始 25 boolean res1 = str.startsWith("He"); 26 27 // 返回此字符串是否以指定的后綴結束 28 boolean res2 = str.endsWith("!"); 29 30 // 返回此字符串從指定的位置開始的子字符串是否以指定前綴開始 31 boolean res3 = str.startsWith("world", 6); 32 33 // 使用默認語言環境的規則將此 String 中的所有字符都轉換為大寫 34 String str4 = str.toUpperCase(); 35 36 // 使用默認語言環境的規則將此 String 中的所有字符都轉換為小寫 37 String str5 = str.toLowerCase(); 38 39 // 返回參數的字符串表示形式 -- 參數可以是其他基本類型、數組、object 40 String str6 = valueOf(true); 41 42 // 判斷此字符串是否匹配給定的正則表達式 43 String regEx = "\\\\d{4}\\\\-\\\\d{1,2}\\\\-\\\\d{1,2}"; 44 boolean res4 = str.matches(regEx); 45 46 // 以指定的字符(正則表達式)分割字符串,得到的是數組 47 String[] arr1 = str.split("o"); 48 for (int i = 0; i < arr1.length; i++) { 49 System.out.println(i + ":" + arr1[i]); 50 } 51 52 // 以指定的字符(或正則表達式)分割字符串,得到的是數組,后面的參數是對於分割次數的限制,為1將不會分割,得到完整的字符串,為2時,得到第一次分割后的內容 53 String[] arr2 = str.split("o", 3); 54 for (int i = 0; i < arr2.length; i++) { 55 System.out.println(i + ":" + arr2[i]); 56 } 57 58 // 用於根據新的子字符串替換字符串中所有匹配的子字符串 59 String str7 = str.replace("o", "c"); 60 61 // 用於根據新的子字符串替換字符串中所有匹配正則表達式的子字符串 62 String str8 = str.replaceAll("o", "c"); 63 64 // 使用給定的新的子字符串替換字符串中給定正則表達式的第一個子字符串 65 String str9 = str.replaceFirst("o","c"); 66 67 // 判斷字符串是不是空的 68 boolean res5 = str.isEmpty(); 69 70 }
StringBuilder的常用方法:
1 public static void main(String[] args) { 2 3 StringBuilder sb = new StringBuilder("hello"); 4 // 追加字符串 5 sb.append("world!"); 6 System.out.println(sb); 7 8 // 在指定位置開始插入字符串 9 sb.insert(5, " "); 10 System.out.println(sb); 11 12 // 刪除指定位置的字符串 13 sb.delete(5, 6); 14 System.out.println(sb); 15 16 // 替換指定位置的字符串 17 sb.replace(5, 11, " boy!"); 18 System.out.println(sb); 19 20 // 反轉字符串 21 sb.reverse(); 22 System.out.println(sb); 23 }
StringBuffer的常用方法:
1 public static void main(String[] args) { 2 StringBuffer sb = new StringBuffer("hello"); 3 // 追加字符串 4 sb.append("world!"); 5 System.out.println(sb); 6 7 // 在指定位置開始插入字符串 8 sb.insert(5, " "); 9 System.out.println(sb); 10 11 // 替換指定位置的字符串 12 sb.replace(5, 6, "boy, hello"); 13 System.out.println(sb); 14 15 // 刪除指定位置的字符串 16 sb.delete(6, 10); 17 System.out.println(sb); 18 19 // 反轉字符串 20 sb.reverse(); 21 System.out.println(sb); 22 }
String、StrinBuilder、StringBuffer的比較
java.lang.String、java.lang.StringBuilder、java.lang.StringBuffer都使用了final修飾,不能被繼承。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence
StringBuffer是線程安全的,同步處理,性能稍慢。
StringBuilder是非線程安全的,並發處理,性能稍快。
String 是字符串常量,對象創建后不可變
StringBuffer、StringBuilder是字符串變量,對象創建后可變。
所以運行速度:
StringBuilder > StringBuffer > String