StringBuffer:就是字符串缓冲区。
用于存储数据的容器。
特点:
1.长度可变
2.可存储不同类型数据
3.最终要转成字符串进行使用
4.可以对字符串进行修改
具备的功能:
1.添加:
StringBuffer append(data);
StringBuffer insert(index,data);
2.删除:
StringBuffer delete(start,end);包含头不包含尾
StringBuffer deleteCharAt(int index);删除指定位置的元素
3.查找:
char charAt(index);
int indexOf(string);
int lastIndexOf(string);
4.修改:
StringBffer replace(start,end,string);
void setCharAt(index,char);
public class StringBufferDemo {
public static void main(String[] args) {
bufferMethodDemo();
bufferMethodDemo_1();
bufferMethodDemo_2();
}
private static void bufferMethodDemo() {
// 创建缓冲区对象
StringBuffer sb=new StringBuffer();
sb.append(4).append(false);
sb.insert(1, "haha");
System.out.println(sb);
}
private static void bufferMethodDemo_1() {
StringBuffer sb=new StringBuffer("abce");
sb.append("xixi");
sb.insert(2, "qq");
System.out.println(sb.toString());
}
public static void bufferMethodDemo_2() {
StringBuffer sb=new StringBuffer("abce");
/*
sb.delete(1, 3);ae
// 清除缓冲区
sb.delete(0, sb.length());
sb=new StringBuffer();
sb.replace(1, 3, "nba");
sb.setCharAt(2, 'q');
sb.setLength(10);
System.out.println("sb:"+sb);
System.out.println("len:"+sb.length());
*/
System.out.println(sb.reverse());//反着来
}
}
运行:

StringBuffer是线程同步的,是安全的。
public class StringBuilder {
object lock;
public StirngBuffer append(int x)
{
synchronized(lock)
{
}
}
public StringBuffer delete(int start,int end)
{
synchronized(lock)
{
}
}
}
JDK5以后出现了功能与StringBuffer一模一样的对象,就是StringBuilder。
不同的是:
StringBuffer是线程同步的。通常用于多线程。
StringBuilder是线程不同步的,通常用于单线程。它的出现提高了效率(在单线程中)
jdk升级
1.简化书写
2.提高效率
3.增加安全性
public class StringBuilderTest {
public static void main(String[] args) {
int[] arr={3,1,5,3,8};
String s=arrayToSring_2(arr);
System.out.println(s);
}
public static String arrayToSring_2(int[] arr) {
StringBuilder sb=new StringBuilder();
sb.append("[");
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1)
sb.append(arr[i]+", ");
else
sb.append(arr[i]+"]");
}
return sb.toString();
}
/*
将一个数组变成字符串
*/
public static String arrayToSring(int[] arr) {
String str="[";
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1)
str+=arr[i]+", ";
else
str+=arr[i]+"]";
}
return str;
}
}
运行:

网友评论