• Java String类(3):StringBulider和StringBuffer详解


    StringBuilder的介绍

    由于String的不可更改的特性,为了方便字符串的修改,Java中又提供了StringBuilder和StringBuffer类。这两个类大部分功能是相同的,我来介绍一下StringBulider常用的一些方法。如果想要查询其它的方法,可以查询API。

    方法说明
    StringBuffer append(String str)

    在尾部追加,相当于String的+=,可以追加:boolean, char, char[],

    double, float, int, long, Object, String, StringBuff的变量

    char charAt(int index)获取index位置的字符
    int length()获取字符串的长度
    int capacity()获取底层保存字符串空间总的大小

    void ensureCapacity(int mininmumCapacity)参数:

    该方法将所需最小容量作为参数

    扩容
    void setCharAt(int index, char ch)将index位置的字符设置为ch
    int indexOf(String str)返回str第一次出现的位置
    int indexOf(String str, int fromIndex)从fromIndex位置开始查找str第一次出现的位置
    int lastIndexOf(String str)返回最后一次出现str的位置
    int lastIndexOf(String str, int fromIndex)从fromIndex位置开始寻找str最后出现的位置
    StringBuffer insert(int offset, String str)在offset的位置插入:八种基类类型&String类型&Object类型数据
    StringBuffer deleteCharAt(int index)删除index位置的字符
    StringBuffer delete(int start, int end)删除[start, end)之间的字符
    StringBuffer replace(int start, int end, String str)将[start, end)之间的字符置换为str
    String substring(int start)从start开始一直到末尾的字符以String的方式返回
    String substring(int start, int end)将[start, end)范围内的字符以String的方式返回
    StringBuffer reverse()反转字符串
    String toString()将所有的字符按照String的方式返回

    下面举一个长点的例子来介绍一下部分方法:

    1. public static void main(String[] args) {
    2. StringBuilder sb1 = new StringBuilder("hello");
    3. StringBuilder sb2 = sb1;
    4. //追加:即尾插->字符,字符串,整型数字
    5. sb1.append(' '); //hello
    6. sb1.append("world"); //hello world
    7. sb1.append(123); //hello world123
    8. System.out.println(sb1);
    9. System.out.println(sb1 == sb2);//true
    10. System.out.println(sb1.charAt(0));//获得0字号位上的字符h
    11. System.out.println(sb1.length());//获取字符串的有效长度:14
    12. System.out.println(sb1.capacity());//获得底层数组的总大小
    13. sb1.setCharAt(0, 'H');//设置任意位置上的字符Hello world123
    14. sb1.insert(0, "Hello world!!!");//Hello world!!!Hello world123
    15. System.out.println(sb1);
    16. System.out.println(sb1.indexOf("Hello"));//获得Hello第一次出现的位置:0
    17. System.out.println(sb1.lastIndexOf("Hello"));//获得Hello最后一次出现的位置:14
    18. sb1.deleteCharAt(0);//删除首字符
    19. sb1.delete(0, 5);//删除[0,5)之间的字符
    20. String str = sb1.substring(0, 5);//截取[0,5)区间中的字符并以String类型返回
    21. System.out.println(str);
    22. sb1.reverse();//字符串逆转
    23. str = sb1.toString();//将StringBuffer的方式返回
    24. System.out.println(str);
    25. }

    从上述例子可以看出:String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder内容可以修改。频繁使用字符串的情况下考虑使用StringBuilder.

    注:String和StringBuilder类不能直接转换。如果想要互相转换,可以采用以下原则:

    1.String变为StringBuilder:利用StringBuilder的构造方法或者append()方法

    2.StringBuilder变为String:调用toString()方法

    常见问题

    1.String,StringBuffer,StringBuilder之间的区别:

    (1)String的内容不可修改,StringBuffer和StringBuilder的内容可以修改

    (2)StringBuffer和StringBuilder的大部分功能是相似的

    (3)StringBuffer采用同步处理,属于线程安全操作(StringBuffer前面有synchronized关键字以保证线程安全);而StringBuilder未采用同步处理,属于线程不安全操作

    (4)StringBuffer性能较差,StringBuilder性能较好

    2.

  • 相关阅读:
    谷歌新大楼正式开放:“龙鳞”顶棚、100%电动、最大地热桩系统······
    为什么使用Spring Boot?
    paddle实现,多维时序数据增强 ,mixup(利用beta分布制作连续随机数)
    BBS项目分布搭建二(个人站点相关)
    简单的权限验证
    Element UI + tree组件 + 面包屑 实现导航
    如何设计一个“好的“测试用例?
    Hive的JDBC操作
    第三章 SpringBoot构造流程源码分析
    容斥原理简述
  • 原文地址:https://blog.csdn.net/asdssadddd/article/details/132714144