StringBuffer和StringBuilder

Posted 巧克力爱王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StringBuffer和StringBuilder相关的知识,希望对你有一定的参考价值。

一、StringBuffer:
1、 java.lang.StringBuffer代表可变的字符序列,JDK1.0中声明,可以对字符串内容

进行增删,此时不会产生新的对象。

2、很多方法与String相同。

3、作为参数传递时,方法内部可以改变值。

实例化对象:
StringBuffer类不同于String,其对象必须使用构造器生成。有三个构造器:

StringBuffer():初始容量为16的字符串缓冲区

StringBuffer(int size):构造指定容量的字符串缓冲区

StringBuffer(String str):将内容初始化为指定字符串内容

String s = new String("我喜欢学习"); 
StringBuffer buffer = new StringBuffer("我喜欢学习"); 
buffer.append("数学");



常用方法:

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() :把当前字符序列逆转

public int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索

引,未找到返回-1

public String substring(int start,int end):返回一个从start到end的新的字符串

public int length():返回字符串的长度

public char charAt(int n ):返回某索引处的字符

public void setCharAt(int n ,char ch):设置指定索引处的字符

 @Test
    public void Test1()
        StringBuffer buffer = new StringBuffer("1432499");
        buffer.append("9258");
        System.out.println(buffer);//14324999258



        buffer.delete(2,3);
        System.out.println(buffer);//1424999258

        buffer.replace(4,7,"334");
        System.out.println(buffer);//1424334258

        buffer.insert(0,"QQ#");
        System.out.println(buffer);//QQ#1424334258

        buffer.reverse();
        System.out.println(buffer);//8524334241#QQ

        System.out.println(buffer.length());//13

        System.out.println(buffer.indexOf(":"));//-1

        String s = buffer.substring(3);
        System.out.println(s);//1424334258
        System.out.println(buffer);//QQ#1424334258

        System.out.println(buffer.charAt(2));//#

        buffer.setCharAt(2,':');
        System.out.println(buffer);//QQ:1424334258(emm,是我的QQ没错了)
    

二、StringBuilder
StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且提供相关功能

的方法也一样。

三、对比String、StringBuffer、StringBuilder

String(JDK1.0):不可变字符序列

StringBuffer(JDK1.0):可变字符序列、效率低、线程安全

StringBuilder(JDK 5.0):可变字符序列、效率高、线程不安全

注意:作为参数传递的话,方法内部String不会改变其值,StringBuffer和

StringBuilder会改变其值。

以上是关于StringBuffer和StringBuilder的主要内容,如果未能解决你的问题,请参考以下文章

字符串拼接的五种方式

java从基础知识字符串处理

StringBuffer 和 StringBuilder 总结

转载String和StringBuffer的区别,以及StringBuffer的常用方法介绍

Stringbuffer和StringBuilder

StringBuffer 和 StringBuilder 类