string是一个不可变的数据类型,一旦对字符串对象进行了初始化,该字符串对象就不能改变了。修改字符串内容的方法
和运算符实际上是创建一个新的字符串.
stringbuilder分配好内存,对字符串的修改就在赋予stringbuilder实例的存储单元中进行.
举例:
string的确是不能修改的:
string str = "a";
str = "b"//str是被赋值了"b"没错,但是str里面原来的string值"a"并没有被修改。
string str = "a";
string str1 = str;
str += "b";//此时str = "ab",str1 = "a";
StringBuilder str = new StringBuilder( "a" );
StringBuilder str1 = str;
str.Append( "b" );
str.ToString()和str1.ToString()都是"ab"。
2.解释string str=null/string str=""
str=null,声明而不分内存空间,str=""声明而分内存空间
3..String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对像s
4..是否可以继承String类?
String类是final类故不可以继承。
5.String s=””;和string s=string.Empty;有什么区别,哪一种方式更好?
String s=””;先分配一块内存存放””文字常量,s引用该内存,string s=string.Empty;s引用string类中的静态变量地址(静态变量开始会被初始化,所以无论引用多少次,只会分配一次内存),两者比较,后者少了一次内存分配,所以效率更高。