StringBuffer就是字符串缓冲区,是用于存储数据的容器。
特点:
1,长度是可变的。
2,可以存储不同类型数据。
3,最终要转成字符串进行使用。
4,可以对字符串进行修改。
既然是一个容器对象,应该具备以下的功能:
1,添加:
StringBuffer append(data);
StringBuffer insert(index,data);
public static void bufferMethodDemo(){
//创建缓冲区对象。
StringBuffer sb = new StringBuffer();
sb.append(4).append(false);//.append("haha");
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());
}
输出结果
2,删除:
StringBuffer delete(start,end):包含头,不包含尾。
StringBuffer deleteCharAt(int index):删除指定位置的元素
3,查找:
char charAt(index);
int indexOf(string);
int lastIndexOf(string);
4,修改:
StringBuffer replace(start,end,string);
void setCharAt(index,char);
增删改查 C(create)U(update)R(read)D(delete)
private 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());//反转
}
jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
不同的是:
StringBuffer是线程同步的。通常用于多线程。
StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。
jdk升级通常是为了:
1,简化书写。
2,提高效率。
3,增加安全性。
下面给出两种方法:
法1是通常的字符串连接,但是每连接一次就会在字符串常量池中创建一个新的字符串。
法2用到了StringBuilder(字符串缓冲区),使用append方法后依次将数组添加进缓冲区后,再使用.toString方法一次性读取。
public class StringBuilderTest {
public static void main(String[] args) {
int[] arr = {3,1,5,3,8};
String s = arrayToString_2(arr);
System.out.println(s);
}
public static String arrayToString_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();
}
/**
* 将一个int数组变成字符串。
*/
public static String arrayToString(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;
}
}