zoukankan      html  css  js  c++  java
  • java之StringBuffer

    一、StringBuffer用来干嘛的

    对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

    和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

    StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

    由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    二、StringBuffer该如何使用

    public static void main(String[] args) {
            StringBuffer sBuffer = new StringBuffer("");
            sBuffer.append("FirstWord");
            sBuffer.append("_SecondWord");//末尾增加
            sBuffer.append("_helloWordWordWordWordWordP");
            sBuffer.reverse();//反转
            sBuffer.delete(5, 9);//删除字符串
            sBuffer.deleteCharAt(10);//根据索引值删除特定字符
            sBuffer.replace(0, 5, "Thr55id");//替换掉子字符串的内容
            int cap = sBuffer.capacity();//显示当前的容量
            char c = sBuffer.charAt(0);
            System.out.println("当前容量:"+cap);
            System.out.println("sBuffer的长度:"+sBuffer.length());
            System.out.println("当前容量:"+cap);
            sBuffer.ensureCapacity(100);//确保容量至少为100
            System.out.println("指定容量后,现在的容量是:"+sBuffer.capacity());
            System.out.println(sBuffer);
            System.out.println("指定索引对应的字符"+c);
            System.out.println("返回第一次出现的指定子字符串在该字符串中的索引:"+sBuffer.indexOf("P"));
            System.out.println("返回一个新的 String,它包含此序列当前所包含的字符子序列。"+sBuffer.substring(1,5));
            System.out.println("返回一个新的字符序列,该字符序列是此序列的子序列。"+sBuffer.subSequence(1, 5));
            System.out.println("sBuffer的长度:"+sBuffer.length());
            
        }
    View Code

    三、关于StringBuffer的思考

      在使用中注意到了几个问题:容量问题、subSequence方法和subString方法的区别

    1、容量问题

      StringBuffer()的初始容量可以容纳16个字符。

      StringBuffer(int size)可以指定分配给该对象的实体的初始容量参数为参数size指定的字符个数

      StringBuffer(String s)可以指定给对象的实体的初始容量为参数字符串s的长度额外再加16个字符

      

    public static void main(String[] args) {
            //System.out.println(new StringBuffer(100).capacity());
            StringBuffer sb1 = new StringBuffer(10);
            System.out.println("指定100容量后,打印一下容量,目前容量为:"+sb1.capacity());
            sb1.append("HelloWord!!!!");
            System.out.println("增加元素后,打印一下容量,目前容量为:"+sb1.capacity());
        }
    View Code

      如何扩容?可以参考https://blog.csdn.net/yeweiyang16/article/details/51755552

    2、subSequence方法和subString方法的区别

      subString返回的是String,subSequence返回的是实现了CharSequence接口的类,也就是说使用subSequence得到的结果,只能使用CharSequence接口中的方法。不过在String类中已经重写了subSequence,调用subSequence方法,可以直接下转为String对象。

    本文来自博客园,作者:编程狸,转载请注明原文链接:https://www.cnblogs.com/ping-pong/p/8831881.html

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/ping-pong/p/8831881.html
Copyright © 2011-2022 走看看