string和StringBuilder扩容机制与性能比较常用API


StringBuilder扩展机制和java中不太一样。
 C#中StringBuilder默认容量:16
 C#中StringBuilder默认扩容机制:16 * 2的N次冥
 C#中StringBuilder扩容时,会出现空间浪费。
StringBuilder也可以设置初始容量也会按照 初始大小* 2的N次冥的形式扩容

结论 少量的字符串拼接(添加),无法体现StringBuilder高性能,
大量的字符串增删改操作时才可以体现StringBuilder高性能。
当没有过多的修改操作只有查询时string的速度快

StringBuilder sb = new StringBuilder();
sb.Append("hello"); // 累加
sb.AppendLine("world");// 累加字符串后,会添加换行符,换行符占两个索引位置。
sb.Append("中文");
sb.AppendFormat("{0:C2}\n", 789);  //   \'  \"  \\  \n   \t
sb.AppendFormat("{0:P0}", 0.9);

// 插入:参数1:插入的起始索引。参数2:插入的数据(很多类型都支持)
sb.Insert(12, "aaaa");

// 删除。参数1:删除的起始索引。 参数2:删除数量
sb.Remove(12, 4);

sb.Replace("world", "世界");

Console.WriteLine(sb.ToString());
// 长度
StringBuilder sb2 = new StringBuilder("ab世界");
Console.WriteLine(sb2.Length);

// 清空
sb.Clear();
Console.WriteLine(sb.ToString());
 char[] chars = new char[4];
 sb2.CopyTo(0, chars, 1, 3);
 foreach (char c in chars)
 {
     Console.WriteLine(c);
 }
 string s = "ab世界"; // 字面量值在常量池(即不是栈,也不堆)
 StringBuilder sb3 = new StringBuilder("ab世界");
 Console.WriteLine(sb2.Equals(s)); // false
 // 规律:Equals一般比较是值。
 Console.WriteLine(sb2.Equals(sb3));// true
 // 规律:引用类型比较(除字符串string字面量外),一般比较的是地址。
 Console.WriteLine(ReferenceEquals(sb2,sb3));// false

 Console.WriteLine(sb3[3]);  // char类型,索引访问单个字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值