StringBuffer常用方法

StringBuffer常用的方法

 

package com.mangosoft.java.string;

/**
 * 字符串特点:字符串是常量,它们的值在创建之后不能更改。
 *
 * 字符串的内容一旦发生了变化,那么马上会创建一个新的对象。
 *
 * 注意:字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。
 *
 * 如果需要频繁的修改字符串的内容,建议使用字符串缓冲类(StringBuffer)。
 *
 * StringBuffer 其实就是一个存储字符的容器。
 *
 * StringBuffer 底层是依赖了一个字符数组才能存储数据的,该字符串默认的初始容量是16,如果字符数组的长度不够使用时,自动增长1倍。
 *
 * 容器的具体行为
 *
 * 增加
 * append(boolean b) //可以添加任意类型的数据到容器中
 * insert(int offset, boolean b) //指定插入的索引值,插入对应的内容。
 *
 * 删除
 * delte(int start, int end) //根据指定的开始与结束的索引值删除对应的内容。
 * deleteCharAt(int index) //根据指定的索引值删除一个字符
 *
 *
 * 修改
 * replace(int start, int end, String str) //根据指定的开始与结束索引值替换成指定的内容。
 * reverse() //反转字符串缓冲类的内容。abc-->cba
 * setCharAt(int index, char ch) //把指定索引值的字符替换成指定的字符。
 * substring(int start, int end) //根据指定的索引值截取字符串。
 * ensureCapacity(int minimumCapacity) //指定StringBuffer内部的字符数组长度。
 *
 * 查看
 * indexOf(String str, int fromIndex) //查找指定索引值第一次出现的索引值,并且指定开始查找的位置。
 * capacity() //查看当前字符数组的长度
 * charAt(int index) //索引指定的索引值查找字符。
 * lastIndexOf(String str)
 * length() //存储的字符个数长度。
 * toString() //把字符串缓冲类的内容转换成字符串返回。
 *
 *
 * StringBuffer与StringBuilder的相同处与不同处:
 * 相同点:
 *       1.两个类都是字符串缓冲类
 *       2.两个类的方法都是一致的
 * 不同点:
 *       1.StringBuffer是线程安全的,操作效率低;StringBuilder是线程不安全的,操作效率高
 *       2.StringBuffer是jdk1.0出现的,StringBuilder是jdk1.5的时候出现的。
 *
 * 推荐使用StringBuilder,因为操作效率高。
 *
 * Created by zhangshengjian on 2016/11/1.
 */
public class StringBufferDemo {

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        //添加
        sb.append("abc");
        //sb.append(true);
        //sb.append(3.14f);

        //插入
        sb.insert(2, "小明");

        //删除
        sb.delete(2,4); //包头不包尾
        sb.deleteCharAt(1);

        //修改
        sb.replace(1,2,"hello");
        sb.reverse();
        sb.setCharAt(3, 'o');
        System.out.println(sb.substring(2));
        System.out.println(sb.substring(4, 6));

//        sb.ensureCapacity(100); //指定容量,一般不会用这个方法,因为StringBuffer构造方法中可以指定初始容量。

        //查看
        System.out.println(sb.indexOf("o"));
        System.out.println(sb.indexOf("h", 0));
        System.out.println(sb.capacity()); //16 34 70 ...
        System.out.println(sb.charAt(3));
        System.out.println(sb.length());
        System.out.println("字符串缓冲类的内容是" + sb);

        test(sb.toString());
    }

    public static void test(String str) {

    }

}

 运行结果:

loha
ha
0
4
16
o
6
字符串缓冲类的内容是olloha

  

  

 

posted @ 2016-11-01 17:53  坚持到放弃  阅读(1119)  评论(0编辑  收藏  举报