转自:http://blog.chinaunix.net/uid-20745012-id-271466.html
StringBuilder 没有提供clear或empty方法。
清空有3种方法:
1)新生成一个,旧的由系统自动回收
2)使用delete
3)使用setLength
将三种方法循环1000万次,代码:
- public class sbbm {
- static String a;
- static long time ;
- public static void main( String[] args ) throws Exception {
- StringBuilder sb = new StringBuilder();
- StringBuilder sb3 = new StringBuilder();
- time = System.currentTimeMillis();
- for( int i = 0; i < 10000000; i++ ) {
- StringBuilder sb2 = new StringBuilder();
- sb2.append( "someStr6ing" );
- sb2.append( "someS5tring2" );
- sb2.append( "some3Strin4g" );
- sb2.append( "so3meStr5ing" );
- sb2.append( "so2meSt7ring" );
- a = sb2.toString();
- }
- System.out.println( "Way2="+(System.currentTimeMillis()-time) );
- time = System.currentTimeMillis();
- for( int i = 0; i < 10000000; i++ ) {
- sb.delete( 0, sb.length() );
- sb.append( "someString" );
- sb.append( "someString2" );
- sb.append( "someStrin4g" );
- sb.append( "someStr5ing" );
- sb.append( "someSt7ring" );
- a = sb.toString();
- }
- System.out.println( "Way1="+(System.currentTimeMillis()-time) );
- time = System.currentTimeMillis();
- for( int i = 0; i < 10000000; i++ ) {
- sb3.setLength( 0 );
- sb3.append( "someStr55ing" );
- sb3.append( "some44String2" );
- sb3.append( "som55eStrin4g" );
- sb3.append( "some66Str5ing" );
- sb3.append( "so33meSt7ring" );
- a= sb3.toString() ;
- }
- System.out.println( "Way3="+(System.currentTimeMillis()-time) );
- }
- }
注意append的字符串要都不相同,否则会因为java 的String pool对结果造成影响(即3好于2)
结果:
- Way2=9438
- Way1=6281
- Way3=6469
可以将各方法多重复几次,点到顺序,等
总体来看:方法2好于方法3好于方法1
相关推荐
在Java中,有几种不同的方式可以用来创建和修改字符串,其中最常用的是`String`、`StringBuffer`和`StringBuilder`。本文将详细介绍这三种类型的字符串及其区别,特别是`StringBuffer`和`StringBuilder`之间的差异。...
1.5.4 Clear方法——清空内容 98 1.5.5 Contains方法——确定是否包含某项 99 1.5.6 ContainsKey方法——确定哈希表是否包含特定键 100 1.5.7 ContainsText方法——确定剪贴板中是否存在数据 101 1.5.8 Contains...
在这个子类中,我们需要重写以下几个关键方法: 1. `startDocument()`: 当解析器开始解析文档时调用。 2. `endDocument()`: 解析文档结束时调用。 3. `startElement(String uri, String localName, String qName, ...
栈主要有以下几种操作: 1. **压栈(Push)**:将一个元素添加到栈顶。 2. **弹栈(Pop)**:从栈顶移除并返回一个元素。 3. **查看栈顶元素(Peek)**:返回栈顶元素但不移除。 4. **检查栈是否为空(IsEmpty)**...
首先,了解`RichTextBox`的基本属性和方法是必要的。`Text`属性用于获取或设置控件中的文本内容,`SelectionStart`用于设定光标位置,`SelectionLength`用于设定选中文本的长度,而`SelectionColor`则可以用来改变...
函数接受当前页面对象、提示信息和目标URL作为参数,利用StringBuilder构造一个包含警告和重定向命令的JavaScript代码片段,并通过`RegisterStartupScript`方法将其注册到页面上。这种方式不仅提高了用户体验,还...
// 清空StringBuilder TreeNode node = treeView1.TopNode; // 获取根节点 while (node.PrevNode != null) node = node.PrevNode; TraversNodes(node); // 遍历根节点 MessageBox.Show(nodesTag.ToString());...
根据给定的文件信息,我们可以总结出以下几个关键的数据库操作知识点: ### 1. 使用INSERT插入数据 #### 插入单行数据 `INSERT INTO` 语句用于向数据库表中添加新的数据行。基本语法如下: ```sql INSERT INTO ...
StringBuilder content = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { content.append(line).append("\n"); } textArea.setText(content.toString()); } catch ...
ASP.NET程序中常用的三十三种代码 1. 打开新的窗口并传送参数: 传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>") 接收参数: ...