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