java学习日记20230405-StringBuffer类

发布时间 2023-04-04 22:50:58作者: 、子夜

StringBuffer类

  • java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删
  • 很多方法与String相同,但StringBuffer是可变长度的
  • StringBuffer是一个容器
  • StringBuffer是final类
  • 实现了Serializable接口,可以保存到文件或网络传输
  • 继承了抽象类AbstractStringBuider
  • AbstractStringBuider属性char[] value,存放字符序列,不是final类型,因此存放在堆中

 

  String和StringBuffer的区别:

  1. String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低/final char value[]
  2. StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高/char[] value
  3. StringBuffer常用的构造器:
    1. 默认无参数构造器,默认长度16,char数组value
    2. 通过构造器指定大小StringBuffer(100);
    3. 通过String创建StringBuffer,大小为String.length+16
    4. StringBuffer和String转化
      public class StringBuffer01 {
          public static void main(String[] args) {
              //方式一,通过构造器
              String str = "Hello Tom";
              StringBuffer stringBuffer = new StringBuffer(str);
              System.out.println(stringBuffer);
      
              //方式二,通过append()
              stringBuffer.append(str);
              System.out.println(stringBuffer);
      
              //StringBuffer---String
              //方式一通过toString();
              String ss = stringBuffer.toString();
              System.out.println(ss);
      
              //方式二使用构造器
              String s1 = new String(stringBuffer);
              System.out.println("{}"+s1);
          }
      }
    5. StringBuffer常用方法:
      1. append
      2. delete(start,end)
      3. repalce(start,end,String)将start到end间的内容替换掉,不含end
      4. indexof查找子串在字符串第一次出现索引,如果没有返回-1
      5. insert
      6. 获取长度length
      7. StringBuffer常用方法示例
         public class StringBufferMethod {
            public static void main(String[] args) {
                StringBuffer s = new StringBuffer("hello");
                s.append(",张三丰");
                s.append(",赵敏").append(100);
                System.out.println(s);
                s.delete(1,5);
                System.out.println(s);
                s.replace(0,2,"hello,");
                System.out.println(s);
                System.out.println(s.indexOf("张三丰"));
                System.out.println(s.insert(0,"测试"));
                System.out.println(s.length());
        
            }
        }