一、.Net中
1、String和string
string是c#中的类,String是Framework的类;string是String的别名,两者等效。
2、String和StringBuilder
String对象是不可变的:即它们创建之后就无法更改。 所有看似修改字符串的 String 方法和 C# 中的运算符,实际上都以新字符串对象的形式返回结果。
static void Main(string[] args)
{
var s1 = "Hi!";
var s2 = "Fanguzai!";
//拼接 s1 和 s2,并且修改 s1 指向的值
s1 += s2; //即 s1 = s1 + s2;
Console.WriteLine(s1);
Console.Read();
}
StringBuilder对象是可变的:即它们创建之后可以自由扩展大小(在达到容量之前,它不会为其自己重新分配空间。如果超过指定大小系统会当前大小倍增,也就10,15,20。建议指定大小)。String分配在栈区,StringBuilder分配在堆区,参考一下示意图。
二、Java中
1、Stringbuffer和String和StringBuilder
String和StringBuilder与C#中类似,区别在于String在Java中也是分配在堆区。
Stringbuffer也是可变的,并且是线程安全的,可以不需要额外的同步用于多线程中;而StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理。
最后执行速度快慢为:StringBuilder > StringBuffer > String