StringBuffer类的概述
- 如果我们对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题;
- 线程安全的可变字符序列;
StringBuffer和String的区别
- 前者长度和内容可变,后者不可变;
- 如果使用前者做字符串的拼接,不会浪费太多的资源;
构造方法
public StringBuffer
:无参构造;
public StringBuffer(int capacity)
:指定容量的字符串缓冲区对象;
public StringBuffer(String str)
:指定字符串内容的字符串缓冲区对象;
package com.manman.cn;
import java.lang.StringBuffer;
public class StringBufferDemo {
public static void main(String[] args) {
//public StringBuffer:无参构造;
StringBuffer sb=new StringBuffer();
System.out.println("sb:"+sb);
System.out.println("sb:"+sb.capacity());
System.out.println("sb:"+sb.length());
System.out.println("----");
//public StringBuffer(int capacity):指定容量的字符串缓冲区对象;
StringBuffer sb1=new StringBuffer(50);
System.out.println("sb1:"+sb1);
System.out.println("sb:"+sb1.capacity());
System.out.println("sb:"+sb1.length());
System.out.println("----");
//public StringBuffer(String str):指定字符串内容的字符串缓冲区对象;
StringBuffer sb2=new StringBuffer("hello");
System.out.println("sb2:"+sb2);
System.out.println("sb2:"+sb2.capacity());
System.out.println("sb2:"+sb2.length());
System.out.println("----");
}
}
StringBuffer类的成员方法
- 添加功能
1、public StringBuffer append(String str)
:可以把任意类型添加到字符缓冲区里面;
package com.manman.cn;
/*
* StringBuffer的添加功能
* public StringBuffer append(String str):
* 可以把任意类型添加到字符缓冲区里面,并返回缓冲区本身;
*/
public class StringBufferDemo1 {
public static void main(String[] args) {
//创建字符串的缓冲区对象
StringBuffer sBuffer=new StringBuffer();
sBuffer.append("hello");
System.out.println(sBuffer);
}
}
可以继续在下面添加:
sBuffer.append("hello");
sBuffer.append(true);
sBuffer.append(12);
sBuffer.append(12.2);
System.out.println(sBuffer);
也可以下面这样:
sBuffer.append("hello").append(true).append(12).append(12.2);
和上面的结果是一样的;
2、public StringBuffer insert(int offset,String str)
:在指定位置把任意类型的数据插入到字符串缓冲区里面;
sBuffer.insert(2, "World");
- 删除功能
1、public StringBuffer deleteCharAt(int index)
:删除指定位置的字符,只删除一个,并返回本身;
2、public StringBuffer delete(int start,int end)
:删除从指定位置开始到指定位置结束的内容,并返回本身;
package com.manman.cn;
public class StringBuffer2 {
public static void main(String[] args) {
///创建对象
StringBuffer string=new StringBuffer();
//添加功能
string.append("hello").append(true).append(12);
System.out.println(string);
//删除功能
string.deleteCharAt(2);
System.out.println(string);
string.delete(1, 4);//包含前面,不包含后面
System.out.println(string);
}
}
- 替换功能
public StringBuffer replace(int start,int end,String str)
:从start开始到end用str替换
package com.manman.cn;
public class StringBufferDemo2 {
public static void main(String[] args) {
//创建字符串缓冲区
StringBuffer sb=new StringBuffer();
//添加数据
sb.append("hello").append("world").append("java");
System.out.println("替换之前:"+sb);
/*
* 需求就是把world这个数据替换为“节日快乐”
*/
sb.replace(5, 10, "节日快乐");
System.out.println("替换之后"+sb);
}
}
- 反转功能
public StringBuffer reverse()
:反转
package com.manman.cn;
public class StringBufferDemo3 {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer();
sb.append("林青霞").append("我爱你");
System.out.println("反转之前:"+sb);
sb.reverse();
System.out.println("反转之后:"+sb);
}
}
- 截取功能
public String substring(int start)
public String substring(int start,int end)
截取功能和前面几个功能是不一样的:返回值类型是不同的,截取的返回值类型是String,本身没有发生改变;
package com.manman.cn;
public class StringBufferDemo4 {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer();
//添加元素
sb.append("hello").append("world").append("java");
//截取功能
String s=sb.substring(5);
System.out.println("添加的元素:"+sb);
System.out.println("截取后的元素:"+s);
System.out.println("-------------");
String s1=sb.substring(5, 10);
System.out.println("从start开始到end的截取:"+s1);
}
}
练习:
1、转换(String和StringBuffer之间)
package com.manman.cn;
/*
* 不能把字符串的值直接赋给StringBuffer,
* 只能通过构造方法StringBuffer sb=new StringBuffer();
* 赋值:(1)StringBuffer sb=new StringBuffer(5);
* (2)StringBuffer sb=new StringBuffer();
* sb.append()的方法
*/
public class StringBufferDemo5 {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer("java");
//方式一:
String str=new String(sb);
//方式二
String str1=sb.toString();
System.out.println("转换字符串str:"+str);
System.out.println("转换字符串str1:"+str1);
}
}
2、把数组拼接成一个字符串
package com.manman.cn;
/*
* 把数组拼接成一个字符串
*/
public class StringBufferDemo7 {
public static void main(String[] args) {
//定义一个数组
int [] arr={44,33,22,11};
//定义功能
//方式1:用String做拼接的方式
String s1=arrayToString(arr);
System.out.println(s1);
//用StringBuffer做拼接的方式
String s2=arrayToString2(arr);
System.out.println(s2);
}
//用StringBuffer做拼接的方式
public static String arrayToString2(int[] arr){
StringBuffer sb=new StringBuffer();
sb.append("[");
for(int x=0;x<arr.length;x++){
if(x==arr.length-1){
sb.append(arr[x]);
}else {
sb.append(arr[x]);
sb.append(",");
}
}
sb.append("]");
return sb.toString();//转换成String类型
}
//用String做拼接的方式
public static String arrayToString(int[] arr){
String s="";
s+="[";
for(int x=0;x<arr.length;x++){
if(x==arr.length-1){
s+=arr[x];
}else {
s+=arr[x];
s+=",";
}
}
s+="]";
return s;
}
}
网友评论