Java学习之StringBuffer类

【1】StringBuffer类概述:我们如果对字符串进行拼接操作,每次拼接都会构建一个新的String对象,耗时而且浪费空间

用StringBuffer就可以解决这个问题,即线程安全的可变字符序列。一个类似于String的字符串缓冲区。

【2】StringBuffer和String的区别:

String为字符串常量,一旦创建不可更改;适用于少量字符串操作的情况

StringBuffer为字符串变量,可更改;适用于多线程下在字符缓冲区进行大量操作的情况

【3】StringBuffer的构造方法:

A:无参构造 public StringBuffer();

B:指定容量的字符串缓冲区对象:public StringBuffer(int capacity);

C:指定字符串内容的字符串缓冲区对象:public StringBuffer(String str);

【4】StringBuffer的方法:

A:public int capacity():返回当前容量(理论值)

B:public int length();返回长度(字符数)(实际值)

public class csdntest1 {
    public static void main(String[] args) {
        String str="hello world";
        StringBuffer str1=new StringBuffer("hello world");
        StringBuffer str2=new StringBuffer(32);
        System.out.println(str1);
        System.out.println(str1.length());
        System.out.println(str1.capacity());
        System.out.println(str2.length());
        System.out.println(str2.capacity());

    }
}

结果如下:

capacity()方法返回的是理论当前容量值,而length值得是当前字符串缓冲数组里所存在的字符的数

【5】StringBuffer的添加功能

A:public StringBuffer append(String str);可以把任意类型的数据放到字符串缓冲数组里,返回的都是字符串缓冲数组本身

B:public StringBuffer insert(int offset,String str);在指定位置把任意类型的数据插到字符串缓冲数组里,返回字符串缓冲数组本身

public class csdntest1 {
    public static void main(String[] args) {
        String str="hello world";
        StringBuffer str1=new StringBuffer("hello world");
        StringBuffer str2=new StringBuffer(32);
        System.out.println(str1);
        System.out.println(str1.length());
        System.out.println(str1.capacity());
        System.out.println(str2.length());
        System.out.println(str2.capacity());
        System.out.println("---------------------------");
        str2.append(2345);
        System.out.println(str2);
        str2.insert(3,"hello world");
        System.out.println(str2);

    }
}

还是在上一个代码的基础上测试这两个方法:结果如下:

【6】StringBuffer的删除功能:

A:public StringBuffer deleteChAt(int index);删除指定位置的字符,并返回本身

B:public StringBuffer delete(int start,int end);删除指定位置开始指定位置结合素的字符串,并返回本身

public class csdntest1 {
    public static void main(String[] args) {
        String str="hello world";
        StringBuffer str1=new StringBuffer("hello world");
        StringBuffer str2=new StringBuffer(32);
        System.out.println(str1);
        System.out.println(str1.length());
        System.out.println(str1.capacity());
        System.out.println(str2.length());
        System.out.println(str2.capacity());
        System.out.println("---------------------------");
        str2.append(2345);
        System.out.println(str2);
        str2.insert(3,"hello world2222222222222");
        System.out.println(str2);
        System.out.println("----------------------------");
        str1.deleteCharAt(4);
        str2.delete(2,7);
        System.out.println(str1);
        System.out.println(str2);
    }
}

结果如下:

【7】同样StringBuffer也具有其他的功能

替换:public StringBuffer replace(int start,int end,String str);从start开始到end之间的所有字符都用str替换,返回原字符串数组缓冲区

反转:public  StringBuffer reverse();

截取:public String subString(int start);从指定位置截取到结束,返回的数据类型是字符串,不是字符缓冲数组

           public String subString(int start,int end);截取从start到end之间的字符串,并返回类型是String

【8】StringBuffer和String的相互转换

A:    String到StringBuffer转换:

       1)构造方法:public StringBuffer(String str);

       2)append()方法:上面有例子

B:StringBuffer到String转换:

       1)使用subString()方法:如下所示,它返回的是String类型的字符串

public class csdntest1 {
    public static void main(String[] args) {
        StringBuffer str2=new StringBuffer("hello world");
        String str3=str2.substring(4);
        System.out.println(str3);
    }
}

      2)构造方法:上面也有例子

      3)通过toString()方法:具体实现看上面的例子

【9】StringBuffer和StringBuilder 的区别

首先应该说的是StringBuilder类在Java5中被提出

A:StringBuffer和StringBuilder最大的区别就是StringBuffer是线程安全的,而StringBuilder不是线程安全的(也就是说不能同步访问)

B:但是StringBuilder相对于StringBuffer,它的速度优势更明显

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值