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 的使用区别的更多相关文章

  1. final,finally,finalize有什么区别?String, StringBuffer, StringBuilder有什么区别?Exception和Error有什么区别?

    继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* ...

  2. JAVA基础之——String、StringBuilder、StringBuffer区别和使用场景

    本文主要讲解String.StringBuilder.StringBuffer区别和应用场景 本文以jdk1.8为例 1 String 操作过程:每次赋值时新建一个String对象. 2 String ...

  3. (转)String,StringBuilder,StringBuffer区别

    Java中的String,StringBuilder,StringBuffer三者的区别 注:转自-博客园-酥风 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuild ...

  4. String,StringBuilder,StringBuffer区别

    一.String,StringBuilder,StringBuffer的大概了解 大家知道String,StringBuilder,StringBuffer三个的基本应用场景. String会一直创建 ...

  5. java中String,StringBuffer,StringBuilder之间的区别

    文章转载自:http://www.cnblogs.com/frankliiu-java/archive/2010/07/05/1771537.html String是固定长度的字符串,如果要发生变化必 ...

  6. String StringBuffer StringBuilder 之间的区别

    StringBuffer与StringBuilder的区别: StringBuffer是jdk1.0版本出来的,线程安全,效率低 StringBuilder是jdk1.5版本出来的,线程不安全,效率高 ...

  7. String、StringBuilder、StringBuffer 区别

    public static void testStringBuffer(){ long start System currentTimeMillis(); StringBuffer sbuf = ne ...

  8. String 与StringBuilder有什么区别

    C# String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与 ...

  9. java中String、stringbuilder、stringbuffer区别

    1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的.每次对String对象进行改变的时候其实都等 ...

随机推荐

  1. My way to Python - Day04 - 模块

    re模块 什么是正则表达式 正则表达式,英文叫做Regular Expression.简单说,正则表达式就是一组规则,用于实现字符串的查找,匹配,以实现关于字符串的相关操作,比如替换,删除等. 正则表 ...

  2. Oracle decode函数 除数为零

    decode (expression, search_1, result_1)如果 expression结果=search_1结果,则返回result_1,类似 if elsedecode (expr ...

  3. PL/SQL中字符串变量的分割转化

    在编写PL/SQL时,有时候我们需要处理这样一个输入的变量,它的格式是由多个值通过分隔符组成的字符串,如“1,2,3”,我们需要将这个变量加入到我们的SQL中,形成诸如in('1','2','3')的 ...

  4. 关于垂直切分Vertical Sharding的粒度

    转载原文地址 http://blog.csdn.net/bluishglc/article/details/6274841 垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个 ...

  5. (一)backbone - API入门

    初探 backbone采用MVC模式,本身提供了模型.控制器和视图从而我们应用程序的骨架便形成. Backbone.js 唯一重度依赖 Underscore.js. 对于 RESTful , hist ...

  6. hdu 1215 七夕节

    Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" ...

  7. Linux-统一事件源

    概念: 信号时一种异步事件:信号处理函数和程序的主循环式两条不同的执行路线,信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽.(为了避免一些竞态条件,信号在处理期间,系统不会再次出发它)太久. ...

  8. 系统报错 hppatusg01

    下载DLL 放在C:\Windows\SysWOW64(64位系统)或C:\Windows\System32(32位系统) 下载地址 https://yunpan.cn/cBB4Q6czDKyqt   ...

  9. eclipse添加xsd

    图片参考 http://wenku.baidu.com/link?url=DFHWF_yD-M-GCt2tfjs1npPs1xhNlyxik7i_pCBjw3oVlbssYrMvLNucuUpKg75 ...

  10. JavaWeb学习笔记--2.3内置对象

    参考资料:http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html 目录 1. JSP内置对象分类2. 属性保存范围 2.1 pag ...