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...

面试题 相关文章推荐
如何写出高性能的JSP和Servlet
Jan 22 面试题
JAVA中的关键字有什么特点
Mar 07 面试题
字符串str除首尾字符外的其他字符按升序排列
Mar 08 面试题
如何在存储过程中使用Loop
Jan 05 面试题
SQL数据库笔试题
Mar 08 面试题
ORACLE十问
Apr 20 面试题
写出SQL四条最基本的数据操作语句(DML)
Dec 12 面试题
什么是.net的Remoting技术
Jul 08 面试题
如何手工释放资源
Dec 15 面试题
下列程序在32位linux或unix中的结果是什么
Jan 26 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
May 03 面试题
三个Unix的命令面试题
Apr 12 面试题
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获取MAC地址的函数代码
2011/09/11 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python中类的初始化特殊方法
2017/12/01 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
python中的协程深入理解
2019/06/10 Python
Python绘制热力图示例
2019/09/27 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
python psutil监控进程实例
2019/12/17 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
学期自我鉴定
2013/11/04 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
mysqldump进行数据备份详解
2022/07/15 MySQL