一个用JavaScript写的的StringBuffer类

原创 2006年05月29日 18:15:00

JavaScript在执行大量的字符处理时会非常慢。参考网上的一些文章,写了个简单的StringBuffer类:

 



一、类图:

StringBuffer()
StringBuffer(string)
   .append(string)
   .toString(separator)

 

二、源码只展示最主要的方法,其它可以自己添加,方法名可参照Java中的命名方法):
function StringBuffer(string) {
    this._buffer = [];
    this.append(string);
}
StringBuffer.prototype.append = function (string) {
    if (string) {
        //this._buffer.push(string); //用下面的兼容性好些,速度也快一点(IE6下测试的)
        this._buffer[this._buffer.length] = string;
    }
    return this;
};
StringBuffer.prototype.toString = function (separator) {
    return this._buffer.join(separator || "");
};

三、用法:
var sb = new StringBuffer("a");
sb.append("b").append("c").append("d"); //这个用法很象在java中的用法
for (var i = 0; i < 10000; i++){
 sb.append(i);
}
document.write(sb.toString());

四、比较一下用普通方法生成的速度
var st, et;

st = new Date();
var sb = new StringBuffer("a");
sb.append("b").append("c").append("d");
for (var i = 0; i < 10000; i++){
 sb.append(i);
}
document.write(sb.toString());
et = new Date();
document.write("<br />");
document.write("用StringBuffer类处理10000个字符相加消耗了" + (et - st) + "毫秒");
document.write("<br /><hr><br />");

st = new Date();
var s = ""
s += "a";
s += "b";
s += "c";
s += "d";
for (var i = 0; i < 10000; i++){
 s += i;
}
document.write(s);
et = new Date();
document.write("<br />");
document.write("用普通方法处理10000个字符相加消耗了" + (et - st) + "毫秒");



点击下载 (请用浏览器右键/目录另存为,下载后将.jpg后缀名去掉)

 

为什么下载地址是个图片?

版权声明:本文为博主原创文章,未经博主允许不得转载。

StringBuffer类的总结

  • 2012年09月23日 22:31
  • 1KB
  • 下载

一个用javascript写的hashtable类

  • 2008年09月26日 11:22
  • 2KB
  • 下载

好好学一遍JavaScript 笔记(三)——StringBuffer、prototype

欢迎技术交流。 QQ:138986722 javaScript中的String的、拼接: 与其他语言类似、ECMAScript的字符串是不可变的、即它们的值不能改变。考虑下面的代码: v...
  • hzw2312
  • hzw2312
  • 2011年12月13日 16:18
  • 1429

Java中的String、StringBuffer和Math类

  • 2008年01月29日 17:25
  • 102KB
  • 下载

怎么清空一个StringBuffer 字符变量

 在循环输出执行临时赋值给某一变量的时候,一般都会用到StringBuffer,不仅仅这个地方会用到StringBuffer,在其他需要的时候,我们也似乎习惯了使用StringBuffer,下面...

关于String和StringBuilder、StringBuffer的一个简单性能测试

String a=String b + String c + String d 这种代码在程序里应该随处可见,一部分人不知道这段代码的缺陷在哪,另一部分人知道这样写不好,但是太顺手了下意识就写了...

一个关于StringBuilder与StringBuffer性能的小试验

原文链接为:http://www.blogjava.net/43880800/archive/2012/04/16/100272.html StringBuilder 是从 Java 5 以后增加的...

Java学习札记14:一个比较String、StringBuffer和StringBuilder之间效率差别的简单例子

String:定长的字符串,它的内容是不可以改变的,正因为如此,编译器可以让字符串共享。 StringBuffer:可变长的字符串缓冲区,多线程操作是安全的,并且在字符串连接操作上提供了性能...
  • L_YQing
  • L_YQing
  • 2012年08月08日 20:37
  • 681

发现Java StringBuffer使用中的一个隐藏问题,你中招了吗?

StringBuffer难道很不安全吗,为什么作为参数,传递到另外一个类里面,然后修改了该变量,居然它的值就变化了。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个用JavaScript写的的StringBuffer类
举报原因:
原因补充:

(最多只允许输入30个字)