关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

String、StringBuffer和StringBuilder的各自用法

发布时间:2020-08-07 18:55:28

应用场景

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是线程不安全的



/template/Home/Zkeys/PC/Static