StringBuilder的使用总结

	程序中字符串的值经常变化的时候我们应该使用StringBuilder对象来存储字符串类容,这样可以优化代码的执行效率(string对象每次赋值都是重新指向另一段内存,多次变化就会多次申请内存、重新赋值、再丢掉之前的内存,这样肯定就增加了消耗,而StringBuilder对象赋值就不会,一般内存够用的时候就会一直是那一段内存来更改存储的值,一般我们声明这个对象的时候最好指定一个适当的长度),那么StringBuilder有哪些需要注意的呢?

先上总结:
1.StringBuilder对象不指定初始容量大小,其默认容量为16
2.StringBuilder对象的Length属性指的是对象里面包含的字符串长度(单个中文和英文或者符号占的长度都为1),当Length赋值为0的时候,相当于重置了StringBuilder对象(清空内容)
3.StringBuilder对象的最大容量:2147483647,即int数据类型的最大值
4.StringBuilder对象中加入的字符串长度大于当前容量时,容量大小会乘以2,直到可以容纳下所有字符为止(容量大小为2的指数倍大小)
5.字符串的长度和字符串所占内存(单位字节)不是同一个概念(中文字符和符号都是占3个字节、英文字符和符号都是占1个字节)
实例代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/// <summary>
/// 总结如下:
/// 1.StringBuilder对象不指定初始容量大小,其默认容量为16
/// 2.StringBuilder对象的Length属性指的是对象里面包含的字符串长度(单个中文和英文或者符号占的长度都为1),当Length赋值为0的时候,相当于重置了StringBuilder对象(清空内容)
/// 3.StringBuilder对象的最大容量:2147483647,即int数据类型的最大值
/// 4.StringBuilder对象中加入的字符串长度大于当前容量时,容量大小会乘以2,直到可以容纳下所有字符为止(容量大小为2的指数倍大小)
/// 5.字符串的长度和字符串所占内存(单位字节)不是同一个概念(中文字符和符号都是占3个字节、英文字符和符号都是占1个字节)
/// </summary>
namespace StringHelper_Student
{
    class Program
    {
        static void Main(string[] args)
        {
            //不指定初始容量
            //StringBuilder stringHelper = new StringBuilder();
            //Console.WriteLine(stringHelper.Length);//字符串对象的长度:0
            //Console.WriteLine(stringHelper.Capacity);//容量:16,说明默认长度为16
            //Console.WriteLine(stringHelper.MaxCapacity);//最大容量:2147483647,即int数据类型的最大值


            //定义初始容量为256个字节
            StringBuilder stringHelper = new StringBuilder(256);

            //Console.WriteLine(stringHelper.Length);//字符串对象的长度:0
            //Console.WriteLine(stringHelper.Capacity);//容量:256
            //Console.WriteLine(stringHelper.MaxCapacity);//最大容量:2147483647,即int数据类型的最大值

            //stringHelper.Append("i am xmx");
            //Console.WriteLine(stringHelper.Length);//字符长度:8,6个字母和两个空格
            //Console.WriteLine(stringHelper.Capacity);//容量:256
            //Console.WriteLine(stringHelper.MaxCapacity);//最大容量:2147483647,即int数据类型的最大值

            //stringHelper.Append("我是徐美西!!aaa");//一个中文感叹号和一个英文感叹号
            //Console.WriteLine(stringHelper.Length);//字符长度:10,说明在C#中字符串对象的长度计算方式,中文和英文或者符号占的长度都为1
            //Console.WriteLine(stringHelper.Capacity);//容量:256
            //Console.WriteLine(stringHelper.MaxCapacity);//最大容量:2147483647,即int数据类型的最大值

            //stringHelper.Append("我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa我是徐美西!!aaa");
            //Console.WriteLine(stringHelper.Length);//字符长度:260,一个重复单元长度是10,一共26个
            //Console.WriteLine(stringHelper.Capacity);//容量:512,突然发现容量变大了2倍(当加入的字符串长度大于初始容量时,容量大小会乘以2,直到可以容纳下所有字符为止)
            //Console.WriteLine(stringHelper.MaxCapacity);//最大容量:2147483647,即int数据类型的最大值



            //stringHelper.Append("我是徐美西!!aaa");
            //Console.WriteLine(stringHelper.Length);//字符长度:10,
            //Console.WriteLine(stringHelper.Capacity);//容量:256
            //Console.WriteLine(stringHelper.MaxCapacity);//最大容量:2147483647,即int数据类型的最大值
            //Console.WriteLine(stringHelper+"查看截止位置");//输出:我是徐美西!!aaa查看截止位置
            //Console.WriteLine(stringHelper.ToString().Length);//字符长度:10
            //stringHelper.Length = 0;
            //Console.WriteLine(stringHelper + "查看截止位置");//输出:查看截止位置,说明指定Length = 0,相当于重置stringHelper
            //Console.WriteLine(stringHelper.Capacity);//容量:256,容量没有变化
            //Console.WriteLine(stringHelper.MaxCapacity);//最大容量:2147483647,即int数据类型的最大值

            //这里说明一下字符串的长度和字符串所占内存(单位字节)不是同一个概念
            byte[] a = Encoding.UTF8.GetBytes("我是谁?");
            Console.WriteLine(a.Length);//12,说明C#中中文字符和符号都是占3个字节
            byte[] b = Encoding.UTF8.GetBytes("ianxmx?");
            Console.WriteLine(b.Length);//6,说明C#中英文字符和符号都是占1个字节

            Console.ReadKey();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值