stringbuilder

String str1 = "myString";
String str2 = "myString";
str1和str2 具有相同的指针 也就是 内存中只有一个myString
如果 改变str1的值 并不会改变myString内存的值 会在内存中重新划分一块区域来存储新的字符串 同时改变str1的指针

StringBuilder则不一样 当你new一个StringBuilder时就会划分一块内存给StringBuilder实例使用 当你Append或Remove或进行其他操作是并不会重新 分配内存  除非你的新字符串长度超过了StringBuilder实例的默认大小才会重新 分配内存

String 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。String 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 String 对象,则 String 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。(MSDN)


想比直接拼接更省内存

string a = "1";

a = "2";//会开辟新内存

a = a + "3";//会开辟新内存

用stringbuilder就不会开辟


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值