• StringBuffer(字符串缓冲区)


    StringBuffer是一个容器,且长度可变,
    可以直接操作多个数据类型,数组只能操作一种
    最终结果为字符串
    字符串的原理就是通过该类实现的
    -----------------------------------------------
    1.添加
    两个主要的方法:
    StringBuffer append()-->将指定数据作为参数添加到已有数据的结尾处
    看main函数中定义了sb,然后定义了sb2 =sb.append(34);
    但是,当我打印这两个数据时,它们的值却是相等的!!!,都是34
    为什么呢?
    按常理说sb里面应该什么都没有啊
    这个问题用面盆理论来解释:
    sb就是面盆,面盆里面加了面,还是面盆啊,加了水,也还是面盆啊...
    ---------------------------------------------------------------
    sb.append("abc").append(true).append(34);
    方法调用链,方法返回的是本类对象,还可以调用这个方法
    ------------------------------------------------------------
    insert()-->append只能在字符串结尾处添加,而insert可以插入
    sb.insert(index,数据);
     
     
    --------------------------------------------------------------------
    2.删除
    上面append,insert都是添加;下面说删除
    StringBuffer delete(start,end)-->删除的内容,包含start,不包含end
    StringBuffer deleteCharAt(index)-->删除指定位置的字符
    --------------------------------------------------------
    初始化StringBuffer,删除1--3(包含1,不包含3)a0 b1 c2 d3 e4
    即输出ade
    用这个方法清空缓冲区
    sb.delete( 0,  sb.length()  );
     
    ---------------------------------------------------------
    删除指定位置上的某个字符
    ------------------------------------------------------------
    3.获取
    上面讲了增、删,下面讲查(获取)
    char charAt(int index)
    返回此序列中指定索引处的 char 值。
     
    int indexOf(String str)
    返回第一次出现的指定子字符串在该字符串中的索引
     
    int lastIndexOf(String str)
    返回最后一次出现的指定子字符串在此字符串中的索引
     
    String substring(int start, int end);
    返回一个新的 String,它包含此序列当前所包含的字符子序列。
    注:返回的类型是字符串类型的
     
    -----------------------------------------------------------------
    4.修改
    修改原来字符串的内容
    replace(int start, int end, String str)--包含首,不包含尾的原则,str为替换的内容
    使用给定的字符替换此序列的子字符串中的字符。
     
     
     
    -----------------------------------------------------------------
    void setCahrAt(int index, char ch)替换某个位置的字符,
    注:没有返回值,替换完就结束了
    -------------------------------------------------------------
    5.反转 
    StringBuffer reverse()
    将abcde倒序打印
    ------------------------------------------------------------
    6.getChars(开始,结尾,容器,容器开始存储的位置)
    将缓冲区的指定数据,存储到指定数组中
    看看,将1-4,即b,c,d存储到char数组(第二个位置开始存)
    -----------------------------------------------------------------
    StringBuilder
    JDK 1.5以后出现的,和StringBuffer几乎一样
    StringBuffer是线程同步的;StringBuilder是线程不同步的
    如果你是单线程,那就用StringBuilder,这样不用判断锁,提高效率,
    如果是多线程,为了保证安全性,就用StringBuffer
    以后开发,建议使用StringBuilder
    ----------------------------------------------------------------------
    java升级的3个原因:
    1.提高效率
    2.简化书写
    3.提高安全性
     
     
     
  • 相关阅读:
    如何应对“需求不确定型项目”?
    Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED
    R语言之——字符串处理函数
    你看那个人他像一条狗
    BZOJ 3744: Gty的妹子序列 [分块]
    BZOJ 3731 3731: Gty的超级妹子树 [树上size分块 !]
    BZOJ 3720: Gty的妹子树 [树上size分块]
    BZOJ 4129: Haruna’s Breakfast [树上莫队 分块]
    SPOJ COT2 Count on a tree II [树上莫队]
    【WC2013】糖果公园 [树上莫队]
  • 原文地址:https://www.cnblogs.com/aisi-liu/p/4227631.html
Copyright © 2020-2023  润新知