Java中可变字符串类StringBuilder和StringBuffer

可变字符串类的基本概念

  1. 由于String类描述的字符串内容是个常量不可改变,当需要在Java代码中描述大量类似的字符串时,只能单独申请和存储,此时会造成内存空间的浪费
  2. 为了解决上述问题,可以使用java.lang.StringBuilder类和java.lang.StringBuffer类来描述字符序列可以改变的字符串。
  3. StringBuffer类是从jdk1.0开始存在,属于线程安全的类,因此效率较低
  4. StringBuilder类是从jdk1.5开始存在,属于非线程安全的类,效率比较高
  5. 效率排名:StringBuilder>StringBuffer>String

 StringBuilder类常用的构造方法

Java中可变字符串类StringBuilder和StringBuffer_第1张图片

 StringBuilder类常用的成员方法

方法声明 功能介绍
int capacity() 返回调用对象的容量
int length() 返回字符串的长度,也就是字符的个数

StringBuilder insert(int offset, String str)

插入字符串并返回调用对象
StringBuilder append( String str) 追加字符串
StringBuilder deleteCharAt(int index) 将当前字符串中下标为index位置的单个字符删除
StringBuilder delete(int start,int end) 删除指定范围的字符串
StringBuilder replace(int start,int end,String str) 替换指定范围的字符串
StringBuilder reverse() 字符串反转

作为参数传递,方法内部String不会改变其值 ,StringBuffer和StringBuilder会改变其值,也就是调用他们的方法是对字符串本身进行处理 

代码实现部分成员方法

import javax.lang.model.element.NestingKind;

public class StringBuilderTest {
    public static void main(String[] args) {
        StringBuilder stringBuilder=new StringBuilder("hello");
        System.out.println(stringBuilder);            //hello
        System.out.println(stringBuilder.length());   //5
        System.out.println(stringBuilder.capacity()); //21
        System.out.println("-------------------------------------");

        //验证StringBuilder是对字符串本身的操作,会改变字符串内容
        System.out.println("调用方法前stringBuilder="+stringBuilder);  //hello
        StringBuilder stringBuilder1=stringBuilder.append("abcd");
        System.out.println("调用方法后stringBuilder="+stringBuilder);  //helloabcd
        System.out.println("stringBuilder1="+stringBuilder1);        //helloabcd

        System.out.println("--------------------------------------");
        //验证string类不改变字符串内容
        String string ="world";
        System.out.println("调用方法前string="+string);   //world
        String string1=string.toUpperCase();
        System.out.println("string1="+string1);         //WORLD
        System.out.println("调用方法后string="+string);//world
        System.out.println("----------------------------------------");

        //实现增删改查
        StringBuilder stringBuilder2=stringBuilder.insert(3,"qwer"); //在下标为3的后面插入qwer
        System.out.println(stringBuilder2);      //helqwerloabcd
        System.out.println(stringBuilder.delete(2,5)); //删除的时候左闭右开,包含2,但不包含5   heerloabcd
        System.out.println("-----------------------------------------");

        //实现string和stringBuilder之间的转换
        String string3=stringBuilder.toString();
        System.out.println("string3="+string3);   //string3=heerloabcd
        StringBuilder stringBuilder3=new StringBuilder(string);
        System.out.println("stringBuilder3="+stringBuilder3);  //stringBuilder3=world
    }
}

Java中可变字符串类StringBuilder和StringBuffer_第2张图片

 

你可能感兴趣的