------------------------StringBuilder----------------------------
String表示的恒定不变的字符串 所以引出StringBuilder 执行对字符串的动态操作
如果增加的字符串长度超出了范围将分配一个更大的空间 然后将原来的内容 拷贝过去。原来的空间就将被回收。
//有点没读懂吧。 意思是 有可能要 维护好多个 string类型的字段? 不这么做的话 当外部用到这个引用对象时候,,可能已经被覆盖掉了?
里面的字段: 最大容量(Int32.MaxValue) 容量 长度 字符数组
StringBuilder有两种时候 需要 分配新的 对象 1> 超过了字符串的长度 2>当调用过ToString之后 要改变 字符数组
如果要 用到线程的话 需要注意线程安全
EnsureCapacity() 指定容量大小 如果字符串的容量小于指定值 那赋值为指定值 否则 不变。
chars 可以让我们用类似数组的方式 来访问数组
AppendInsert(); //指定插入
AppendFormat(); //将指定的对象格式 转成字符串然后添加到 StringBuilder里。
replace(); //将 字符串里面指定的字符串或者 字符 转化成 参数。
Remove() ; //删除指定范围的 内容
Equals(); //判断是不是相等。
String 和 StringBuilder 的方法并不对等 所以可能要进行字符串操作时候可能需要来回切换
--------------------获取对象的字符串表达形式-------------------------------
System.Object 里面定义了 一个共有的无参ToString 任何对象都可以调用这个函数来获得对应的字符串
但是默认的 是 返回类型名称 如果需要有意义的toSring 那么久重写。
//这段话 留着 用到回看。
//这之后的笔记 都是精简版
------------------------------------------------------------------------------------精简版------------------------------------------------------------------------------------
------------------------------------------格式化------------------------------------------------------
不同类型 格式化 用 IFormattable ToString 第一个 参数 格式化参数
用 {1} 代替 参数 合成 字符串.
例: String.Format("{1},{2}{3}",value,num,object); //后面那三个格式都不一样。
//这个 函数会调用后面参数自己本身的ToString函数。
自定义 格式化器
AppendFormat()
parse () 将字符串 解析成其他类型的对象
例:Int32 num1= Int32.Parse(" 123",NumberStyles.AllowLeadingWhite,null); //第二个参数是忽略空格
dateTime的prase解析不好 精确解析用 PraseExact();
-----------------------------------------字符和字节之间的转换(296页)--------------------------------------
多字节较小 Unicode较大 做转换 节约空间
UTF8 编码 UTF16编码
例:string balue = "aaaaa";
Encoding encodingU8 = System.Text.Encoding.UTF8; //用UTF8模式编码
Byte[] strBuff = encodingU8.GetBytes(balue);
//之前用到过 在网上 查的。再用 复看
--------------------------------------字节 字符的 编码 解码 -------------------------------------------------
解码数据流
EnCoding.GetDecoder(); //返回的Decoder类对象 能保存 用剩下的残余数据 接着下一段数据继续用
EnCoidng.GetEncoder(); //返回 EnCoder类对象 用于 对成块数据 编码