1.字符串的不可变性
当你给一个字符串重新赋值之后,老的值并没有销毁,而是重新开辟了一块空间(堆)存储新的值。
**当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。
示意图:值类型和引用类型在内存中的存储
示意图:s1和s2 在栈中存储着相同的地址,这个地址指向堆中的"张三";s1重新赋值“123”,会在堆中开辟一块新的空间存储“123”,然后栈中的s1存储的地址改变!
示意图:验证s1="123",s2="123"在栈中存放的内存都是堆中同一个地址
2.可以将字符串看做是char类型的一个只读数组。
ToCharArray();
new string (char[] chs);
3.StringBuilder
4.字符串的各种方法
1) Length
2) ToUpper
3) ToLower
4) equals : s1.equals(s2,StringComparison.OrdinalIgnoreCase) --忽视大小写的比较
5) split :
6) Contains
7) Replace
8) Substring
9) StartsWith
10) EndsWith
11) IndexOf/LastIndexOf
12) Trim
13) TrimStart
14) TrimEnd
15) IsNullOrEmpty
16) string.Join