java中String和StringBuffer的区别

如题所述

StringBuffer与StringBuilder的区别主要是前者是线程安全的,就是说它是同步的;后者不安全,不是同步的,其它的区别不大。当你的程序不需要线程同步,一般都用StringBuilder.StringBuilder(以下简称sb)与String(以下简称str)的区别是:举个例子吧:Strings=newString(“woshizifuchuan”);当你要改变s的时候,比如改为s=s+”dsdsdsd”;系统会重新创建一个字符串变量它的值为”woshizifuchuandsdsdsd”,然后把该字符串赋值给s.当你这样的改变s的行为在一个循环里面,那么将会创建大量的中间变量,影响程序的运行效率:如:for(inti=0;i<100000;i++){s=”a”;}StringBuildersb=newStringBuilder();一次性给sb分配一个固定长度大小的内存空间,当你改变的时候会在此空间后面加上,不够的时候,内存空间自动增加.比如初始分配的内存大小为10字节,那么.Sb.append(“as”);它占据内存空间10字节,此时sb.toString().equals(“as”)为true;Sb.append.(“qqq”),它占据的内存空间还是10字节,sb.toString().equals(“asqqq”)为true.当内存空间不够的时候,自动加长,加入一次增加10字节,那么:Sb.append(“ppppppp”),它占据的内存空间为20字节.StringBuilder允许设定它的初始长度和每次增加的长度。综合来说:当你大量更一个字符串的时候,String消耗的内存空间小,但是执行效率低。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-25
String 不是简单类型,而是一个类,它被用来表示字符序列。字符本身符合 Unicode 标准,其初始化方式有两种。
如:String greeting=“Good Morning! \n”;
String greeting=new String(=“Good Morning! \n”);
String的特点是一旦赋值,便不能更改其指向的字符对象,如果更改,则会指向一个新的字符对象 。本回答被提问者采纳
相似回答