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