StringBuilder效果

//对象定义(构造函数) //参数:所有参数须为字符串形式. //当参数长度为1时,参数值将是字符串之间连接的分隔符 //当参数长度大于1时,最后一位将是字符串之间的分隔符,其余的参数将是字符串值 //当不指定参数时,分隔符默认为空白 //也可以不指定分隔符,而在ToString中显式指定分隔符 //如:var str = new StringBuilder(‘,‘); 则在ToString时,将使用,号作为分隔符连接字符串 // var str = new StringBuilder(‘a‘,‘b‘,‘c‘,‘,‘); 则在ToString时,将输出 ‘a,b,c‘ function StringBuilder() {     this._buffers = [];     this._length = 0;     this._splitChar = arguments.length > 0 ? arguments[arguments.length - 1] : ‘‘;

if (arguments.length > 0) {         for (var i = 0, iLen = arguments.length - 1; i < iLen; i++) {             this.Append(arguments[i]);         }     } } //向对象中添加字符串 //参数:一个字符串值 StringBuilder.prototype.Append = function (str) {     this._length += str.length;     this._buffers[this._buffers.length] = str; } StringBuilder.prototype.Add = StringBuilder.prototype.append; //向对象附加格式化的字符串 //参数:参数一是预格式化的字符串,如:‘{0} {1} {2}‘ //格式参数可以是数组,或对应长度的arguments, //参见示例 StringBuilder.prototype.AppendFormat = function () {     if (arguments.length > 1) {         var TString = arguments[0];         if (arguments[1] instanceof Array) {             for (var i = 0, iLen = arguments[1].length; i < iLen; i++) {                 var jIndex = i;                 var re = eval("/\\{" + jIndex + "\\}/g;");                 TString = TString.replace(re, arguments[1][i]);             }         }         else {             for (var i = 1, iLen = arguments.length; i < iLen; i++) {                 var jIndex = i - 1;                 var re = eval("/\\{" + jIndex + "\\}/g;");                 TString = TString.replace(re, arguments[i]);             }         }         this.Append(TString);     }     else if (arguments.length == 1) {         this.Append(arguments[0]);     } } //字符串长度(相当于ToString()后输出的字符串长度 StringBuilder.prototype.Length = function () {     if (this._splitChar.length > 0 && (!this.IsEmpty())) {         return this._length + (this._splitChar.length * (this._buffers.length - 1));     }     else {         return this._length;     } } //字符串是否为空 StringBuilder.prototype.IsEmpty = function () {     return this._buffers.length <= 0; } //清空 StringBuilder.prototype.Clear = function () {     this._buffers = [];     this._length = 0; } //输出 //参数:可以指定一个字符串(或单个字符),作为字符串拼接的分隔符 StringBuilder.prototype.ToString = function () {     if (arguments.length == 1) {         return this._buffers.join(arguments[1]);     }     else {         return this._buffers.join(this._splitChar);     } }

StringBuilder效果

时间: 2024-10-07 00:44:17

StringBuilder效果的相关文章

MapReduce中使用字符串拼接导致的问题

今天在帮业务方优化mapreduce作业时遇到一个用字符串拼接的问题. reduce中字符串拼接代码: while (it.hasNext()) { line = it.next().toString(); artID+=line+","; ct++; } 采用的是String直接拼接,结果是该作业作业只剩一个reduce一直在运行,而且时间长达6小时,其他已经完成的reduce只用了10多分钟. 咨询了一下业务方,artID有的会很长,这个时候会一直进行字符串拼接. 我又看了一下未完

基础笔记3(String StringBuilder StringBuffer 数组)

---恢复内容开始--- 1数组.有序的同类型的集合. 2.string :字符串类型:其实就是一个字符数组.添加了private final,所以string是一个不可以变的字符串. String.charAt(index):或者字符数组的元素 equals():比较是每个字符是否相等.即比较的是内容. 字符串常用方法和源码: 3.stringbuilder 可扩容的字符串.也就是自动实现了字符数组的扩大.一般是两倍. 4,arraylist.数组列表,封装了数组. 5.多维数组: 虽然数组定

StringBuilder和StringBuffer

StringBuilder java.lang 类 StringBuilder java.lang.Object java.lang.StringBuilder 所有已实现的接口: Serializable, Appendable, CharSequence public final class StringBuilder extends Object implements Serializable, CharSequence 一个可变的字符序列.此类提供一个与 StringBuffer 兼容的

Java 中 StringBuilder 在高性能用法总结

关于StringBuilder,一般同学只简单记住了,字符串拼接要用StringBuilder,不要用+,也不要用StringBuffer,然后性能就是最好的了,真的吗吗吗吗? 还有些同学,还听过三句似是而非的经验: 1. Java编译优化后+和StringBuilder的效果一样: 2. StringBuilder不是线程安全的,为了“安全”起见最好还是用StringBuffer: 3. 永远不要自己拼接日志信息的字符串,交给slf4j来. 1. 初始长度好重要,值得说四次. StringBu

使用Reader模拟实现BufferedReader效果

我们都知道BufferedReader是一个缓冲区的读取流,内部需要读取功能的成员,也就是Reader的子类.我么可以这样实现: 1:内部定义字符数组,相当于缓冲区,提高了效率 2:操作数组的下标 3:统计字符的个数 public class Demo11 { public static void main(String[] args) throws IOException {<pre name="code" class="java"><span

【Java】String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

11大Java开源中文分词器的使用方法和分词效果对比

本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那要用的人结合自己的应用场景自己来判断. 11大Java开源中文分词器,不同的分词器有不同的用法,定义的接口也不一样,我们先定义一个统一的接口: /** * 获取文本的所有分词结果, 对比不同分词器结果 * @author 杨尚川 */ public interface WordSegmenter {

StringBuilder与StringBuffer

转:http://www.cnblogs.com/pepcod/archive/2013/02/16/2913557.html JAVA中用于处理字符串常用的有三个类: java.lang.String. java.lang.StringBuffer. java.lang.StringBuilder, 这三者的共同之处都是 final 类,不允许被继承,这主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着的,且考虑到防止其中的参数被修改影响到其它的应用. StringBuffer 与 S

JDK源码之String、StringBuffer、StringBuilder

就String而言,平时工作中用得最多,但是很多时候还是用不好,有必要对他进行整体的分析下.如果看过Thinking in java,再看下JDK的源码,很多东西就会变得十分明了.现在对String的底层实现进行下分析. 首先是对构造函数而言,我工作中最常用到的可能就是new String(str)这个构造函数了,所以再在此关注这一个.这个构造函数是对传进来的String进行解析,将其放进一个数组当中,我们设定为arrayOfChar,String类定义了全局变量offset(偏移量),coun