• java -> StringBuffer与StringBuilder类


    字符串缓冲区

    StringBuffer类

    在学习String类时,API中说字符串缓冲区支持可变的字符串,什么是字符串缓冲区呢?接下来我们来研究下字符串缓冲区。

    查阅StringBuffer的API,StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

    原来StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

    StringBuffer的方法使用

    代码演示:

    创建一个字符串缓冲区对象。用于存储数据。

    StringBuffer sb = new StringBuffer();

      sb.append("haha"); //添加字符串

      sb.insert(2, "it");//在指定位置插入

      sb.delete(1, 4);//删除(前闭后开)

      sb.replace(1, 4, "cast");//替换指定范围内的内容(前闭后开)

      String str = sb.toString();

    注意:append、delete、insert、replace、reverse方法调用后,返回值都是当前对象自己,所以说,StringBuffer它可以改变字符序列的长度和内容

    对象的方法链式调用

    在我们开发中,会遇到调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。这种时候,我们就可以把代码现在一起,如append方法一样,代码如下:

    创建一个字符串缓冲区对象。用于存储数据。

    StringBuffer sb = new StringBuffer();

    添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。

    String str = sb.append(true).append("hehe").toString();

    StringBuffer练习

    练习:int[] arr = {34,12,89,68};将一个int[]中元素转成字符串  格式 [34,12,89,68]

    public static String toString_2(int[] arr) {

            StringBuffer sb = new StringBuffer();     

            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();

        }

    l  无论多少数据,数据是什么类型都不重要,只要最终变成字符串就可以使用StringBuffer这个容器

    StringBuilder类

    查阅API发现还有一个StringBuilder类,它也是字符串缓冲区,StringBuilder与它和StringBuffer的有什么不同呢?

    我们阅读StringBuilder的API说明发现,它也是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快

  • 相关阅读:
    MinIO:入门
    JS中面向对象的多种继承方式
    点击按钮实现图片下载
    给大家推荐一个免费的云平台-阿贝云
    REPLACE
    SUBSTRING_REGEXPR 截取字符串
    基本的git/linux/g++/ 等指令
    C++引用和指针&, *
    go语言异常处理 error panic recover defer
    django.db.utils.IntegrityError: (1048, "Column 'id' cannot be null")
  • 原文地址:https://www.cnblogs.com/miaoxingren/p/9393895.html
Copyright © 2020-2023  润新知