zoukankan      html  css  js  c++  java
  • StringBuffer和StringBuilder

    一、关于StringBuffer和StringBuilder的使用:

    1.对比分析:

    • String:不可变的字符序列(这三个底层都是char【】存储)
    • StringBuffer:可变的字符序列;线程安全,效率低
    • StringBuilder:可变的字符序列;jdk5.0新增,线程不安全,效率高

    关于StringBuffer和StringBuilder,他们代码底层是一样的,就是多一个synchronize

    查看源码可以得知一些重要消息:

    1.当时用空参的创建字符串时:

    StringBuffer str1 = new StringBuffer();//底层穿件了一个长度为16的char【】数组

    2.当使用带参的创建字符串时:

    StringBuffer sb = new StringBuffer(“abc”);//相当于穿件了一个字符串+16长度的char【】数组

    3.当16长度不够了怎么办?扩容!

    默认情况下,扩容是原理容量*2+2,同时将原有数组中的元素赋值到新的数组中。如果长度太大,那么会直接赋值要添加的数组长度给容量。

    因此:开发中建议使用StringBuffer(int capacity)指定数组的长度,在知晓大概的长度的情况下。

    二、StringBuffer的常用方法:

    • StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
    • StringBuffer delete(int start,int end):删除指定位置的内容
    • StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
    • StringBuffer insert(int offset, xxx):在指定位置插入xxx
    • StringBuffer reverse() :把当前字符序列逆转
  • 相关阅读:
    numpy操作
    python将整数均分成N等分
    Windows7下安装pyspark
    python的append insert extend pop del remove使用
    马尔科夫链
    dataframe行变换为列
    scala获取某个时间间隔的时间
    Python3+Flask+uwsgi部署
    A*寻路算法
    C++易混淆知识点整理
  • 原文地址:https://www.cnblogs.com/liuhuan425/p/10848016.html
Copyright © 2011-2022 走看看