标签:
string是c#中的类,String是Framework的类,C# string 映射为 Framework的 String。如果用string,编译器会把它编译成String。
string为空的定义方法
1、string str = null;只定义了一个引用,未分配存储空间。
2、string str = "";定义一个指针,并在内存中划分一块值为空的存储空间,指针指向这个空间。
3、string str = string.Empty;定义一个指针,并在内存中划分一块值为空的存储空间,指针指向这个空间,但不会反复的重复申请内存。
判断string变量是否为空的方法
1、str == String.Empty
2、str == ""
3、str.length == 0
效率:3>1>2
string的一些特性:
1、不可变性:( string会重复申请内存)
string是引用类型,当给string赋值时,会在堆中开辟一块空间来存放string,在栈中存放string在堆中的地址。
在对string对象的实例进行操作时,并不是真的对这个string对象的实例进行修改,而是返回一个新的string对象实例作为操作执行结果。
若需要对string对象的实例进行频繁的操作可以使用StringBuider
2、字符串池(针对字符串常量):
当程序中有多个相同的字符串的常量时,这些字符串都是指向内存中的同一个字符串。
如:
srting str1 = "123";
string str2 = "123";
str1与str2所指向的内存存储空间为同一个。
3、字符串留用:(Intern)
string s1 = "a";
string s2 = "b";
string s3 = "c";
string s4 = s1+s2+s3;
string s5 = s1+s2+s3;
//虽然s4和s5这两个字符串中的内容一样,但是在内存中是两块内存。
string x1="a";
string x2="bc";
string s4=string.intern(s1+s2+s3);
string s5=string.IsInterned(x1+x2);
//这个时候,s4和s5在堆中的地址就是一样的。(字符串留用)
string属性:
Length: 获取字符串的长度;
string操作:
StringBuilder的优越性:
不需要每次对字符串操作都去分配内存空间,所以系统无需处理垃圾;当对字符串进行多次操作的时候他的效率远远高于string
标签:
原文地址:http://www.cnblogs.com/on3piece/p/5340149.html