深入理解StringBuilder的使用方法
今天用到了StringBuilder来拼接查询语句,发现这个真好用,决定做个小结。
百度一个StringBuilder的定义:String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
主要是StringBuilder的Append()方法和Capacity属性。
注意当Capacity小于Length时,Capacity是以2倍的方式来扩充的。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StringBuilder的使用 { class Program { static void Main(string[] args) { StringBuilder s = new StringBuilder(); long dataStart = DateTime.Now.Ticks; for (int i = 0; i < 1000; i++) { s.Append('a', i); } long dataEnd = DateTime.Now.Ticks; Console.WriteLine(s.Capacity); Console.WriteLine("用时:{0}", (dataEnd - dataStart) / 100000.0); dataStart = DateTime.Now.Ticks; for (int i = 0; i < 1000; i++) { s.Append('a', i); if (s.Capacity < s.Length) { s.Capacity += 8; } } dataEnd = DateTime.Now.Ticks; Console.WriteLine("用时:{0}", (dataEnd - dataStart) / 100000.0); Console.Read(); } } }
输出结果:
以上这篇深入理解StringBuilder的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
C# 利用StringBuilder提升字符串拼接性能的小例子
用Stopwatch分段监控了一下,发现耗时最多的函数是SaveToExcel 此函数中遍列所有数据行,通过Replace替换标签生成Excel行,然后将行数据累加赋值到一个字符串 复制代码 代码如下: string excelString = ""; foreach(var item in list){ excelString += string.Format("<row>....{0}</row>",list.Title)
-
js实现C#的StringBuilder效果完整实例
本文实例讲述了js实现C#的StringBuilder效果.分享给大家供大家参考,具体如下: /* ##################### DO NOT MODIFY THIS HEADER ##################### # Title: StringBuilder Class # # Description: Simulates the C# StringBuilder Class in Javascript. # # Author: Adam Smith # # Email
-
C#中StringBuilder用法以及和String的区别分析
String类有不可改变性.每次执行字符操作时,都会创建一个新的String对象. StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题.初始化一个StringBuilder 之后,它会自动申请一个默认的StringBuilder 容量(默认值是16),这个容量是由Capacity来控制的.并且允许,我们根据需要来控制Capacity的大小,也可以通过Length来获取或设置StringBuilder 的长度. 举例: 用String类这么写 复制代码 代码如下:
-
C#中StringBuilder类的使用总结
String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能. 通过用一个重载的构造函数方法初始化变量,可以创建
-
深入理解StringBuilder的使用方法
今天用到了StringBuilder来拼接查询语句,发现这个真好用,决定做个小结. 百度一个StringBuilder的定义:String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类. 主要是String
-
PHP模拟asp.net的StringBuilder类实现方法
本文实例讲述了PHP模拟asp.net的StringBuilder类实现方法.分享给大家供大家参考.具体如下: 在asp.net开发开发环境中,有一个StringBuilder类是比较常用的, 这个类用起来可以实现很方便的text文本的操作. 但是在php中,没有这个类. 不过我们却可以通过自定义类来模拟这个方法. /******************************************** * * 函数名:StringBuilder * 作 用:构造PHP下的StringBuil
-
深入理解Java中HashCode方法
关于hashCode,维基百科中: In the Java programming language, every class implicitly or explicitly provides a hashCode() method, which digests the data stored in an instance of the class into a single hash value (a 32-bit signed integer). hashCode就是根据存储在一个对象实例
-
Java详细分析String类与StringBuffer和StringBuilder的使用方法
目录 String类基本概念 String字符串的存储原理 String类的常用构造方法 String类中常用方法 StringBuffer类 StringBuilder类 String类基本概念 String类属于引用数据类型,不属于基本数据类型. 在Java中只要是" "(双引号)中的,都是String对象. java中规定,双引号中的字符串是不可变的,也就是说"abc"自出生到死亡都不可能变成"abcd",也不能变成"ab&quo
-
深入理解Java new String()方法
问题一:这段代码创建了几个对象? String str1 = new String("aa"); 答案是两个 "aa"对象和String对象 其中有一项是常量池 常量池在Class文件被加载的时候,会被加载进内存中的方法区中的运行时常量池,而运行时常量池里就包括字符串常量池,Class文件中的字符串在类加载时就会加载到字符串常量池中去 不过在周志明老师在深入java虚拟机中有说到,到了JDK1.7时,字符串常量池就被移出了方法区,转移到了堆里了. String st
-
深入理解javascript的getTime()方法
1.理解getTime getTime() 方法返回一个时间的格林威治时间数值. 可以使用这个方法把一个日期时间赋值给另一个Date 对象. 语法: dateObj.getTime() 参数: 无. 返回值: getTime 方法的返回值一个数值,表示从1970年1月1日0时0分0秒(UTC,即协调世界时)距离该日期对象所代表时间的毫秒数. 例子: 使用 getTime() 复制日期对象 创建一个拥有相同时间值的日期对象. var birthday = new Date(1994, 12, 10
-
深入理解javascript中concat方法
最近在恶补js知识的时候,总是会因为js强大的语法而感到震撼.因为以前对前端方面的疏忽,导致了一些理解的错误.因此痛改前非,下定决心,不管做什么事情,都要有专研的精神. 在介绍前,抛出一个问题:如何将多个数组合并为一个数组? 以下的分享会分为如下小节: 1.concat方法的基础介绍 2.从实例中感受concat方法 1.concat方法的基础介绍 concat方法用于多个数组的合并.它将新数组的成员,添加到原数组的尾部,然后返回一个新数组,原数组不变. console.log([].conca
-
Java stringBuilder的使用方法及实例解析
String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. 通过用一个重载的构造函数方法初始化变量,可以创建 Strin
-
深入理解equals和hashCode方法
前言 在程序设计中,有很多的"公约",遵守约定去实现你的代码,会让你避开很多坑,这些公约是前人总结出来的设计规范. Object类是Java中的万类之祖,其中,equals和hashCode是2个非常重要的方法. 这2个方法总是被人放在一起讨论.最近在看集合框架,为了打基础,就决定把一些细枝末节清理掉.一次性搞清楚! 下面开始剖析. public boolean equals(Object obj) Object类中默认的实现方式是 : return this == obj .那就是说
-
PHP面向对象之旅:深入理解static变量与方法
static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法". 如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号"::"调用. static关键字可以用来修饰变量.方法. 不经过实例化,就可以直接访问类中static的属性和static的方法. static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法.因为静态属性和方法被创建时
随机推荐
- Powershell读取PFX证书并输入密码的脚本分享
- javascript 屏蔽鼠标键盘的几段代码
- js自动闭合html标签(自动补全html标记)
- IIS6.0+Tomcat7.0整合总结(推荐)
- 批处理 文件归类整理器(当面目录)
- MVC异常处理详解
- 详解Docker目录挂载的方法总结
- 浅谈php扩展imagick
- Ajax 框架之SSM整合框架实现ajax校验
- 制作符合用户体验的漂亮的input输入框
- 举例讲解C#编程中对设计模式中的单例模式的运用
- Android Service绑定过程完整分析
- C++数据精度问题的解决方案(对浮点数保存指定位小数)
- Android RecyclerView实现下拉列表功能
- opencv实现图片与视频中人脸检测功能
- Android 使用 RxJava2 实现倒计时功能的示例代码
- python实时获取外部程序输出结果的方法
- Python+selenium实现自动循环扔QQ邮箱漂流瓶
- CentOS7.3下mysql 8.0.13安装配置方法图文教程
- layui添加动态菜单与选项卡 AJAX请求的例子