Java常用类之StringBuffer、StringBuilder类

StringBuffer类与StringBuilder类

在没有遇到它前,你会认为String类NB,但学完StringBuffer和StringBuilder后,你会发现:“是我自作多情了”。(不过String类确实挺NB的)

由于String的特性:内容一旦声明则不可改变,如果要改变,改变的肯定是String的引用地址。那么如果一个字符串要经常改变,此时使用String就不太合适,从而使用StringBuffer或StringBuilder更好。

区别

与String的区别

  1. 效率比String高
  2. 比String节省内存。

StringBuffer与StringBuilder的区别

  1. StringBuffer:可变长字符串,JDK1.0提供,相较与StringBuilder效率较慢、线程安全。

  2. StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全

  3. 总体的用法上没有太大差别,如果是单线程用StringBuilder效率更高,多线程使用StringBuffer更安全。

常用方法

方法描述
append(String str)在StringBuffer中提供了大量的追加操作(与String中使用的"+"类似)
insert(int offset,String str)在指定位置处加上指定字符串
reverse()将内容反转保存
replace(int start,int end,String str)指定内容替换
lenth()字符串的长度
delete(int start,int end)删除指定范围的字符串
toString()Object类继承的方法,用于将内容变为String类型

StringBuilder、StringBuffer支持的方法大部分与String类似,更多的方法可以查看相关API文档。

实例

常用方法实例

public class Main3 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("hello");//追加类似String中的”+“
        System.out.println(sb);
        sb.append("Hello");
        sb.insert(5, " world ");//在第5个位置后添加字符串”world“
        System.out.println(sb.toString());//将StringBuffer转为String类型并打印
        sb.reverse();//将字符串反转
        System.out.println("反转:" + sb.toString());
        sb.delete(0, 5);//删除从第1个字符开始到第5个,包括开头不包括结尾
        System.out.println(sb.toString());
    }
}

运行结果

在这里插入图片描述

比较三者效率实例

public class Main {
    public static void main(String[] args) {
        String str = "";
        long begin = System.currentTimeMillis();
        for (int i = 0; i < 99999; i++) {
            str += i;
        }
        long end = System.currentTimeMillis();
        System.out.println("String用时:" + (end - begin));
        StringBuffer str2 = new StringBuffer();
        long begin2 = System.currentTimeMillis();
        for (int i = 0; i < 9999999; i++) {
            str2.append(i);
        }
        long end2 = System.currentTimeMillis();
        System.out.println("StringBuffer用时:" + (end2 - begin2));
        StringBuilder str3 = new StringBuilder();
        long begin3 = System.currentTimeMillis();
        for (int i = 0; i < 9999999; i++) {
            str3.append(i);
        }
        long end3 = System.currentTimeMillis();
        System.out.println("StringBuilder用时:" + (end3 - begin3));
    }
}

运行结果:

注意:这里String只循环了99999次,而其他两个为9999999次,单位为ms

在这里插入图片描述

总结

  1. 从上面的实例可以看出在一个字符串经常被更改的情况下,使用StringBuffer或StringBuilder能够大大的提高效率。
  2. 由于StringBuffer和StringBuilder在使用上没有什么太大区别,所以演示较少。
    学完之后,在字符串操作上,你会如虎添翼,操作更加犀利。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值