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(); sb.Append("SELECT * FROM Table \n"); sb.Append("WHERE A="B" \n"); return sb.ToString();
StringBuilder builder = new StringBuilder(); builder.AppendFormat("<span class=\"navSep\"></span>\r\n"); builder.AppendFormat("机构看盘</a>\r\n"); builder.AppendFormat("<span class=\"navSep\"></span>\...
stringbuilder用法 java中StringBuilder的⽤法 String 對象是不可改變的。每次使⽤ System.String 類中的⽅法之⼀時,都要在內...StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); 設置容量和⾧度
如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能。 通过用一个重载的构造函数方法初始化变量,可以...
C#中StringBuilder类的使用方法
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的区别
StringBuilder的用法.doc
stringbuilder用法 java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中stringBuilder的用法java中...
PrintStream,StringBuilder,Formatter
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
string,stringbuffer,stringbuilder
StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); 设置容量和长度 虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。...
C# StringBuilder 拼接字符串 字符串转换工具 StringBuilder比StringBuffer运行速度要快,因为StringBuilder是针对于单线程的,所这它是非线程安全的。普通情况下建议使用StringBuilder。
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
String和StringBuilder类的区String和StringBuilder类的区别String和StringBuilder类的区别String和StringBuilder类的区别别
用C++实现类似StringBuilder的例子,非常高效,速度快,代码容易理解,使用方便
StringBuilder拓展方法示例源码 项目描述 源码演示了手动给StringBuilder添加拓展方法IndexOf string的一些方法StringBuilder没有,我们可以灵活的给他 拓展一下。把自己需要的方法添加上。以后在项目里直接引用一下...
String ,StringBuffer与StringBuilder的区别
将一段文本构造StringBuilder可以调用的代码