A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© slience 中级黑马   /  2012-11-3 17:52  /  1475 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StrngBuffer与StringBuilder的区别?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

1 个回复

倒序浏览
StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
可以通过它的append方法来赋值.
sb.append("hello");

StringBuilder:是一个可变对象,和StringBuffer相比,不是线程安全的,一般用在单个线程操作的时候
(这种情况很普遍,所以一般优先选用StringBuilder),速度比StringBuffe快很多。
字符串连接操作中StringBuffer的效率要比String高:

copy去下面的代码去运行一下;
       String tempstr = "abcdefghijklmnopqrstuvwxyz";
        int times = 5000;
        long lstart1 = System.currentTimeMillis();
        String str = "";
        for (int i = 0; i < times; i++) {
            str += tempstr;
        }
        long lend1 = System.currentTimeMillis();
        long time = (lend1 - lstart1);
        System.out.println(time);
可惜我的计算机不是超级计算机,得到的结果每次不一定一样一般为 46687左右。
也就是46秒。
我们再看看以下代码
        String tempstr = "abcdefghijklmnopqrstuvwxyz";
        int times = 5000;
        long lstart2 = System.currentTimeMillis();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < times; i++) {
            sb.append(tempstr);
        }
        long lend2 = System.currentTimeMillis();
        long time2 = (lend2 - lstart2);
        System.out.println(time2);
得到的结果为 16 有时还是 0
所以结论很明显,StringBuffer 的速度几乎是String 上万倍。当然这个数据不是很准确。因为循环的次数在100000次的时候,差异更大。不信你试试。

如果在程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更好。


评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马