String和StringBuilder 的使用区别

时间:2022-03-31 09:20:36

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 );

}