String和StringBuilder 的使用区别
String 类有不可变性,每次执行操作时都会创建一个新的String对像,需要对该对象分配新的空间。
StringBuilder 解决了对字符串重复修改过程中创建大量对象的问题。初始化一个StringBuilder后,它会自动申请一个默认的StringBuilder容量(16)
这个容量是由Capacity来控制的.并且允许,我们根据需要来控制Capacity的大小,也可以通过Length来获取或设置StringBuilder 的长度.
举例: 用String类这么写
String begin_query = "select UPPER(MachineName) As MachineName, "+"LOWER(MachineOwner) As MachineOwner, Status, "+ "StartTime from NET_STRESS WHERE ";
String end_query = " AND StartTime > '" + startTime + "'AND StartTime < '" + endTime + "'";
String query = begin_query + GetWhereClause("PASSED") + end_query;
用StringBuilder类这么写:
StringBuilder begin_query = new StringBuilder();
begin_query.Append("select UPPER(MachineName) As MachineName ");
begin_query.Append("LOWER(MachineOwner) As MachineOwner, Status, ");
begin_query.Append("StartTime from NET_STRESS WHERE ");
StringBuilder end_query = new StringBuilder();
end_query.Append(" AND StartTime > '");
end_query.Append(startTime);
end_query.Append("' AND StartTime < '");
end_query.Append(endTime);
end_query.Append("'");
String query = begin_query.Append(GetWhereClause("PASSED")).Append(end_query).ToString();
StringBuilder 类的一些属性与方法
--------------------------------------------------------------------------------
Length 属性并不是只读的。
StringBuilder sb=new StringBuilder("I live the language");
Console.WriteLine(sb.ToString( ));
sb.Length = 6;
//Displays "I live"
Console.WriteLine(sb.ToString( ));
Capacity 属性
描述:当前为实例分配的字符数量。默认容量是16,如果将一个字符串作为参数提供给构造函数,容量以最接近 2 的幂的值。
MaxCapacity 属性
描述:这个实例中可以被分配的字符最大数量。
Append( ) 方法
描述:追加给定值的字符串表示。
StringBuilder sb=new StringBuilder( );
Console.WriteLine( sb.Capacity+"/t"+sb.Length );
sb.Append ( 'a' , 17 )
Console.WriteLine( sb.Capacity+"/t"+sb.Length );
16 0 <== 输出
32 17
EnsureCapacity( Int capacity ) 方法
描述:如果当前容量小于指定容量,内存分配会增加内存空间以达到指定容量。
Replace( Char oldchar,Char newchar ) 方法
描述:用newchar替换oldchar。
Replace( String oldstring,String newstring ) 方法
描述:用newstring替换oldstring。
Replace( Char oldchar,Char newchar,Int startpos,Int count ) 方法
描述:从startpos到count-1之间用newchar替换oldchar。
Replace( String oldstring,String newstring,Int startpos,Int count ) 方法
描述:从startpos到count-1之间用newstring替换oldstring。
ToString( ) 方法
StringBuilder sb=new StringBuilder( "I live this game" );
String s1=sb.ToString( ); //Displays "I live this game"
String s2=sb.ToString(3,4); //Displays "live"
在这里第二个ToString( )方法调用了String类的Substring( )方法
public String ToString( int startIndex,int length )
{
return m_StringValue.Substring( startIndex,length );
}
String和StringBuilder 的使用区别的更多相关文章
- final,finally,finalize有什么区别?String, StringBuffer, StringBuilder有什么区别?Exception和Error有什么区别?
继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* ...
- JAVA基础之——String、StringBuilder、StringBuffer区别和使用场景
本文主要讲解String.StringBuilder.StringBuffer区别和应用场景 本文以jdk1.8为例 1 String 操作过程:每次赋值时新建一个String对象. 2 String ...
- (转)String,StringBuilder,StringBuffer区别
Java中的String,StringBuilder,StringBuffer三者的区别 注:转自-博客园-酥风 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuild ...
- String,StringBuilder,StringBuffer区别
一.String,StringBuilder,StringBuffer的大概了解 大家知道String,StringBuilder,StringBuffer三个的基本应用场景. String会一直创建 ...
- java中String,StringBuffer,StringBuilder之间的区别
文章转载自:http://www.cnblogs.com/frankliiu-java/archive/2010/07/05/1771537.html String是固定长度的字符串,如果要发生变化必 ...
- String StringBuffer StringBuilder 之间的区别
StringBuffer与StringBuilder的区别: StringBuffer是jdk1.0版本出来的,线程安全,效率低 StringBuilder是jdk1.5版本出来的,线程不安全,效率高 ...
- String、StringBuilder、StringBuffer 区别
public static void testStringBuffer(){ long start System currentTimeMillis(); StringBuffer sbuf = ne ...
- String 与StringBuilder有什么区别
C# String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与 ...
- java中String、stringbuilder、stringbuffer区别
1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的.每次对String对象进行改变的时候其实都等 ...
随机推荐
- (转)vivoxshot 精英版三模转五模模式切换操作方法
https://yunpan.cn/cPUBWc8vtKpID (提取码:de92) 本帖最后由 韩爱峰 于 2016-3-29 23:00 编辑 碰到不少机友在使用过程中操作不成功,现将我的方法跟大 ...
- C# 将窗口移动到指定位置
private void button1_Click(object sender, EventArgs e) { Frm f = new Frm(); f.StartPosition = FormSt ...
- CSS background 属性 总结
CSS background 属性总结
- 如何把一个表中的部分字段值插入到另一个表中去 这sql吊
Insert into JHAC_TB_CODE(CID,CODE,ADD_TIME,USERID,PRO_CODE,USERNAME) select f_code.FID,f_code.Fcod ...
- 关于局域网内IIS部署网站,本机可访问,而网内其他用户无法访问问题的解决方法
在Window7操作系统中安装配置好IIS后,在本地IIS上部署网站程序没有问题,但是局域网等远程用户不能正常访问网站程序,提示“Internet Explorer 无法显示该网页”. 问题解决思路如 ...
- BZOJ 2243 SDOI 2011染色
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 算法讨论: 树链剖分把树放到线段树上.然后线段树的每个节点要维护的东西有左端点的颜色 ...
- 开发中遇到的问题(一)——java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
1.错误描述: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) wit ...
- [Codeforces Round #186 (Div. 2)] A. Ilya and Bank Account
A. Ilya and Bank Account time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- 简单的使用php多线程抓取网页
PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持多线程,所以开发爬虫程序效率并不高,这时候往往需 要借助Cu ...
- oracle starup报错
今天在linux里面安装Oracle的时候出现一个报错,忽略报错安装之后,数据库启动的时候报错: 从网上找到的解决方法: 创建实例后,进入sqlplus启动报错: sqlplus / as sysdb ...