String 和StringBuilder的区别以及相互转换

如题所述

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消耗的内存空间小,但是执行效率低。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答