应用场景
String适用于少量的字符串操作的情况
StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer适用多线程下在字符缓冲区进行大量操作的情况
java中常用的String方法
1、 字符串的长度
String a="hello world!";System.out.println(a.length());12
2、取得特定下标的字符
System.out.println(a.charAt(1));1
3、截取多个字符并由其他字符串接收
char[] b=new char[10];a.getChars(0,5,b,4);System.out.println(b);输出结果:hello
1234
4、将字符串变成一个byte数组
byte c[]=a.getBytes();System.out.println(new String(c));输出结果:hello world!123
5、将字符串变成一个字符数组
char[] d=a.toCharArray();System.out.println(d);输出结果:hello world!123
6、比较两个字符串是否相等,前者区分大小写,后者不区分
String e="Hello World!";System.out.println(a.equals(e));System.out.println(a.equalsIgnoreCase(e));输出结果:falsetrue123456
7、判定字符串是否是特定开头或结束
System.out.println(a.startsWith("ee"));System.out.println(a.endsWith("ld!"));输出结果:falsetrue12345
8、连接两个字符串
String f="你好";System.out.println(a.concat(f));输出结果:hello world!你好123
9、截取字符串
System.out.println(a.substring(0,5));System.out.println(a.substring(6));输出结果:0下标开始位置,5结束位置(5-1),6开始位置到结束
hello
world!12345
10、前者查找一个字符或者字符串第一次出现的地方,后者查找一个字符或字符串最后一次出现的地方
System.out.println(a.indexOf("o"));System.out.println(a.lastIndexOf("o"));输出结果:471234
11、替换
System.out.println(a.replace(a,f));System.out.println(a.replace(a,"Hello"));System.out.println(f.replace("你","大家"));输出结果:
你好
Hello
大家好1234567
StringBuffer和StringBuilder的方法
1、追加字符串
StringBuffer s = new StringBuffer();s.append("sad");12
2、返回指定索引位置的字符,索引从0开始
StringBuffer s = new StringBuffer();s.append("sad");System.out.println(s.charAt(2));123
3、删除指定索引位置的字符
StringBuffer s = new StringBuffer();s.append("sad");s.deleteCharAt(1);System.out.println(s);//输出为:sd1234
4、删除从开始索引到结束索引的字符串
StringBuffer s = new StringBuffer();s.append("sad");s.delete(0,1);System.out.println(s);//输出为:ad1234
5、在指定索引位置之前插入字符串
StringBuffer s = new StringBuffer();s.append("sad");s.insert(0,'t');System.out.println(s);//输出为:tsad1234
6、返回指定字符串的开始字符索引位置,还可以从某个字符索引位置开始向后匹配,没有找到匹配的就会返回-1
StringBuffer s = new StringBuffer();s.append("aaabbb");System.out.println(s.indexOf("ab"));//输出为:2//还可从指定位置开始匹配System.out.println(s.indexOf("ab",3));//输出为:-1System.out.println(s.indexOf("tt"));//输出为:-1 123456
7、和indexOf()的用法一样,只不过是从后往前匹配,也支持从指定索引开始从后往前去匹配
StringBuffer s = new StringBuffer();s.append("aaabbb");System.out.println(s.lastIndexOf("ab"));//输出为:2//还可从指定位置开始从后向前匹配System.out.println(s.lastIndexOf("ab",4));//输出为:2System.out.println(s.lastIndexOf("tt"));//输出为:-1123456
8、反转字符串
StringBuffer s = new StringBuffer();s.append("aaabbb");System.out.println(s.reverse());//输出为:bbbaaa123
String、StringBuffer、StringBuilder的区别
1.从性能、速度方面
StringBuilder > StringBuffer > String
2.从线程安全的角度去看
StringBuffer是线程安全的,而StringBuilder是线程不安全的