为什么需要StringBuffer

简介: 为什么需要StringBuffer

(1)为什么需要StringBuffer

由于String的内容是不可变的,在频繁操作字符串的应用中,导致String对象泛滥,不断的被创建和销毁,占用大量的内存和CPU时间。

例如,将十万个"A"连成一个大的字符串。代码如下:

这将创建100000个对象,其中有99999个对象是临时对象,是计算的中间结果。JVM需要花费大量的内存来存放,也需要花费大量CPU时间来回收对象。

 

因此,通常要使用可变的字符串缓冲区类(StringBuffer) 来完成类似的工作:

这样,只需要创建一个StringBuffer和一个String对象就行了。

 

(3)常用方式

运行结果:

 

(4)方法

    StringBuffer stringBuffer = new StringBuffer();
    stringBuffer.append("abcdex");
    System.out.println(stringBuffer); //abcdex
    //返回当前容量
    int capacity = stringBuffer.capacity();
    System.out.println(capacity);  // 16
    //返回长度(字符数)
    int length = stringBuffer.length();
    System.out.println(length);
    
    //不会影响之后的stringBuffer本身
    //截取开始到结尾的字符串,包括开头,不包括结尾
    String substring = stringBuffer.substring(0, 3);
    System.out.println(substring);  //abc
    //从指定位置截取到末尾
    String substring2 = stringBuffer.substring(3);
    System.out.println(substring2);  //dex
    
    //会影响之后的stringBuffer本身
    //删除指定位置的字符,并返回本身
    StringBuffer deleteCharAt = stringBuffer.deleteCharAt(0);
    System.out.println(deleteCharAt);  // bcdex
    //删除从指定位置开始到结束的内容,并返回本身
    StringBuffer delete = stringBuffer.delete(0, 3);
    System.out.println(delete);  // ex
    //从开始到结尾用指定字符串替换
    StringBuffer replace = stringBuffer.replace(0, 3, "A**");
    System.out.println(replace);  //A**
    //字符串反转
    StringBuffer reverse = stringBuffer.reverse();
    System.out.println(reverse);  //**A
    //替换指定位置的字符
    stringBuffer.setCharAt(0, 'T');
    System.out.println(stringBuffer); //T*A
    //在指定的位置(字符个数后)添加新的文本对象
    StringBuffer insert = stringBuffer.insert(2, "xx");
    System.out.println(insert);  //T*xxA

相关文章
|
6月前
StringBuilder和StringBuffer区别是什么?
StringBuilder和StringBuffer区别是什么?
|
6月前
|
缓存 安全 调度
StringBuilder和StringBuffer的区别
StringBuilder和StringBuffer的区别
|
安全
【StringBuilder和StringBuffer】
【StringBuilder和StringBuffer】
39 0
|
安全 Java
字符串相关类StringBuffer和StringBuilder
字符串相关类StringBuffer和StringBuilder
41 0
可变字符串StringBuffer和StringBuilder
可变字符串StringBuffer和StringBuilder
StringBuffer 方法
StringBuffer 方法
151 0
StringBuffer方法
快速学习StringBuffer方法
|
SQL 安全 Java
你还在使用 StringBuffer ?
Java中常用字符串处理类包括 String、StringBuffer 和 StringBuilder ,当对字符串进行修改的时候,使用 StringBuffer 和 StringBuilder 一般比使用 String 效率更高。因为 StringBuffer 的内部实现方式和 String 不同,StringBuffer 在进行字符串处理时,不生成新的对象,在速度和内存使用上都要优于 String。
你还在使用 StringBuffer ?
|
机器学习/深度学习 安全 Java