StringBuilder和String的区别


Posted in 面试题 onMay 18, 2015
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
另外,对于 String 我们不得不多说几句:
1.它是引用类型,在堆上分配内存
2.运算时会产生一个新的实例
3.String 对象一旦生成不可改变(Immutable)
3.定义相等运算符(== 和 !=)是为了比较 String 对象(而不是引用)的值
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example22
{
class Program
{
static void Main(string[] args)
{
const int cycle = 10000;
long vTickCount = Environment.TickCount;
String str = null;
for (int i = 0; i str += i.ToString();
Console.WriteLine(“String: {0} MSEL”, Environment.TickCount – vTickCount);
vTickCount = Environment.TickCount;
//看到这个变量名我就生气,奇怪为什么大家都使它呢? :)
StringBuilder sb = new StringBuilder();
for (int i = 0; i sb.Append(i);
Console.WriteLine(“StringBuilder: {0} MSEL”, Environment.TickCount – vTickCount);
string tmpStr1 = “A”;
string tmpStr2 = tmpStr1;
Console.WriteLine(tmpStr1);
Console.WriteLine(tmpStr2);
//注意后面的输出结果,tmpStr1的值改变并未影响到tmpStr2的值
tmpStr1 = “B”;
Console.WriteLine(tmpStr1);
Console.WriteLine(tmpStr2);
Console.ReadLine();
}
}
}
结果:
String: 375 MSEL
StringBuilder: 16 MSEL
A
A
B
A

Tags in this post...

面试题 相关文章推荐
几道PHP面试题
Apr 14 面试题
新浪网技术部笔试题
Aug 26 面试题
如何让Java程序执行效率更高
Jun 25 面试题
Java工程师面试集锦之Spring框架
Jun 16 面试题
如何找出EMP表里面SALARY第N高的employee
Dec 05 面试题
Oracle中delete,truncate和drop的区别
May 05 面试题
西安当代医院管理研究院笔试题
Dec 11 面试题
软件测试笔试题
Oct 25 面试题
EJB发布WEB服务一般步骤
Oct 31 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
Jan 26 面试题
shell程序如何生命变量?shell变量是弱变量吗?
Nov 10 面试题
explicit和implicit的含义
Nov 15 #面试题
C#如何调用Word并打开一个Word文档
May 08 #面试题
C# .NET面试题
Nov 28 #面试题
初级软件工程师面试题 Junior Software Engineer Interview
Feb 15 #面试题
params有什么用
Mar 01 #面试题
Does C# support multiple inheritance? (C#支持多重继承吗)
Jan 04 #面试题
西安当代医院管理研究院笔试题
Dec 11 #面试题
You might like
求PHP数组最大值,最小值的代码
2011/10/31 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
js图片上传的封装代码
2017/08/01 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Python版中国省市经纬度
2020/02/11 Python
Python logging模块handlers用法详解
2020/08/14 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
自我鉴定200字
2013/10/28 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
片区教研活动总结
2014/07/02 职场文书
教师思想工作总结2015
2015/05/13 职场文书
党小组考察意见
2015/06/02 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android