21(1)(C#相关)

时间:2022-02-26 03:13:33

------------------------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类对象 用于 对成块数据 编码