`
mwei
  • 浏览: 121932 次
  • 性别: Icon_minigender_1
  • 来自: 抽象空间
社区版块
存档分类
最新评论

new StringBuilder() VS new StringBuilder(arg)

    博客分类:
  • java
 
阅读更多
StringBuilder,非线程安全的,避免作为类变量存储信息。

//1.
StringBuilder sb_1=new StringBuilder(); //内部的字符数组长度默认为16
sb_1.append("0123456789"); //此时内部的字符数组的长度仍然是16 , 未利用空间为6
sb_1.append("abcdef");//此时内部的字符数组的长度仍然是16, 未利用空间为0
sb_1.append("N");//此时内部的字符数组的长度是34,34=(16+1)*2 , 未利用空间为17
sb_1.append("0123456789abcdefN1");//此时内部的字符数组的长度是70,70=(34+1)*2,未利用空间为35
		
//2.
StringBuilder sb_2=new StringBuilder("0123456789");//内部的字符数组长度=构造器内参数.length()+16,这里为26, 未利用空间为16
sb_2.append("abcdef"); //此时内部的字符数组长度未变,为26, 未利用空间为10
sb_2.append("N");//此时内部的字符数组长度仍然是26, 未利用空间为9
sb_2.append("0123456789abcdefN1");//此时内部的字符数组的长度是54,54=(26+1)*2,未利用空间为19
		
/**
 * 第一种方式,再追加长度为35的字符串时,内部的字符数组长度不变,仍为70,未利用空间为0.
 * 第二种方式,再追加长度为35的字符串时,内部的字符数组长度变为110,未利用空间为40.
 * 
 * 第一种方式,继续追加长度为1的字符串时,内部的字符数组长度变为142,未利用空间为71.
 * 第二种方式,继续追加长度为1的字符串时,内部的字符数组长度变为110,未利用空间为39.
 * 
 * 未利用空间对比如下:
 * 6<-->16,  0<-->10,  17<-->9,  35<-->19,  0<-->40,  19<-->39
 * 前者比上后者,小于0.5的可能性较大,大于2的可能性较小。
 * 没有采用多次随机的方式演练,但是:
 * 在拼接更长的字符串时,且目标字符串长度未知的情况下,
 * 若采用第二种方式,内部的字符数组长度的递增速度更快. 可能会浪费更多的空间.
 * 所以建议使用new StringBuilder();
 * (win32, jdk5)
 */




分享到:
评论

相关推荐

    SQL工具(自动生成StringBuilder sb=new StringBuilder())

    自动生成如下格式的SQL语句;很方便哦! StringBuilder sb=new StringBuilder(); sb.Append("SELECT * FROM Table \n"); sb.Append("WHERE A="B" \n"); return sb.ToString();

    StringBuilder字符串生成工具

    StringBuilder builder = new StringBuilder(); builder.AppendFormat("&lt;span class=\"navSep\"&gt;&lt;/span&gt;\r\n"); builder.AppendFormat("机构看盘&lt;/a&gt;\r\n"); builder.AppendFormat("&lt;span class=\"navSep\"&gt;&lt;/span&gt;\...

    stringbuilder用法 java中StringBuilder的⽤法

    stringbuilder用法 java中StringBuilder的⽤法 String 對象是不可改變的。每次使⽤ System.String 類中的⽅法之⼀時,都要在內...StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); 設置容量和⾧度

    stringBuilder完整版.pdf

    如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能。 通过用一个重载的构造函数方法初始化变量,可以...

    C#中StringBuilder类的使用方法

    C#中StringBuilder类的使用方法

    Java的StringBuilder类.pdf

    StringBuilder sb =newStringBuilder(); // 对象名.length() 序列长度 System.out.println(sb.length());// 0 // 对象名.append() 追加到序列 sb.append("hello"); System.out.println(sb);// hello // 97代表的是是...

    String、StringBuilder和StringBuffer的区别

    String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别

    StringBuilder的用法

    StringBuilder的用法.doc

    java中stringBuilder的用法

    stringbuilder用法 java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中...

    PrintStream,StringBuilder,Formatter

    PrintStream,StringBuilder,Formatter

    String,StringBuffer,StringBuilder区别

    String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的

    string,stringbuffer,stringbuilder

    string,stringbuffer,stringbuilder

    StringBuilder用法

    StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); 设置容量和长度 虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。...

    StringBuilder拼接字符串

    C# StringBuilder 拼接字符串 字符串转换工具 StringBuilder比StringBuffer运行速度要快,因为StringBuilder是针对于单线程的,所这它是非线程安全的。普通情况下建议使用StringBuilder。

    String StringBuffer和StringBuilder区别之源码解析

    String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证

    String和StringBuilder类的区别

    String和StringBuilder类的区String和StringBuilder类的区别String和StringBuilder类的区别String和StringBuilder类的区别别

    C++实现StringBuilder的例子

    用C++实现类似StringBuilder的例子,非常高效,速度快,代码容易理解,使用方便

    StringBuilder拓展方法示例源码2012530

    StringBuilder拓展方法示例源码 项目描述 源码演示了手动给StringBuilder添加拓展方法IndexOf string的一些方法StringBuilder没有,我们可以灵活的给他 拓展一下。把自己需要的方法添加上。以后在项目里直接引用一下...

    String ,StringBuffer与StringBuilder

    String ,StringBuffer与StringBuilder的区别

    StringBuilder构造器

    将一段文本构造StringBuilder可以调用的代码

Global site tag (gtag.js) - Google Analytics