JavaSE-15-常用对象StringBuffer StringBuilder

StringBuffer 与String 区别

1.StringBuffer 就是字符串缓冲区,
2.StringBuffer可变长度。String 长度不可变。
3. 可以存储不同类型数据。最终转换成字符串 ,初始容量默认16个字符。
4.可以对字符串 插入insert 追加 append ,修改replace。删除delete,查找indexOf (增删改查)
package stringbuffer;
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer s= new StringBuffer();//字符串容器
StringBuffer s1= s.append(4);// 指向同一块地址
System.out.println(s==s1);//此时比较的是地址
//存储不同数据类型
//增删改查
//尾部追加
s1.append(“333”);
s1.append(true);
s1.append(1.2222);
s1.append(1.2222).append(true).append(“3333”);//方法调用链
System.out.println(“s:”+s);//s:4333true1.22221.2222true3333
//插入 1 位置
s1.insert(1,“nihao”);
System.out.println(s);//4nihao333true1.22221.2222true3333
//修改
StringBuffer sb2= new StringBuffer();
sb2.append(“abcd”);
sb2.insert(2,“XX”);
System.out.println(sb2);//abXXcd
//删除
StringBuffer sb3= new StringBuffer();
sb3.append(“abcd”);
sb3.delete(0,2);//不包含 2
System.out.println(sb3);//cd
//清空缓冲区
StringBuffer sb4= new StringBuffer();
sb4.append(“abcd”);
sb4.delete(0,sb4.length());//
System.out.println(sb4);//空 没东西
//修改
StringBuffer sb5= new StringBuffer();
sb5.append(“abcd”);
sb5.replace(1,3,“xyz”);//
System.out.println(sb5);//axyzd
//查找
System.out.println(sb5.lastIndexOf(“a”));//axyzd
//指定索引出替换
sb5.setCharAt(1,‘5’);
System.out.println(sb5);//axyzd
//设置长度
StringBuffer sb6= new StringBuffer();
sb6.append(“abcd”);
sb6.setLength(2);
System.out.println(sb6);//ab
sb6.setLength(10);
System.out.println(sb6);//ab
//反转
System.out.println(sb6.reverse());//ba
}
}

可变长度数组

长度超过会 创建一个多一倍的数组,旧数组赋值到新数组。
StringBuffer 构造可以指定长度。与默认16长度 区别在于效率上,比如能够确定数据长度在
40 内。可以指定长度 节省创建动作。用默认的 要延长 还要运算。

JavaSE-15-常用对象StringBuffer StringBuilder

StringBulder 可变字符序列与StringBuffer区别

StringBuilder 与StringBuffer 用法一模一样。
在单个线程中使用StringBuilder 比StringBuffer快(为什么快 ? 因为不需要 判断锁),StringBuilder不保证多线程,多线程要用StringBuffer.

  • jdk升级特点:
    • 1,简化书写。
    • 2,提高效率。
    • 3,增加安全性。
      StringBuffer API 加了 sychronized :
      JavaSE-15-常用对象StringBuffer StringBuilder
      JavaSE-15-常用对象StringBuffer StringBuilder
      StringBuilder:

JavaSE-15-常用对象StringBuffer StringBuilder

StringBuilder 与String 对比

单线程中在循环体 做字符串拼接时候用StringBuilder append 比String 的“+” 好 ,因为String会产生新的对象。


package cn.itcast.p2.stringbuffer.test;

    public class StringBuilderTest {

        /**
         * @param args
         */
        public static void main(String[] args) {

            int[] arr = {3,1,5,3,8};
            String s = arrayToString_2(arr);

            System.out.println(s);//"[3,1,5,3,8]"

        }
        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;
        }

    }


}