String 和StringBuilder的区别以及相互转换
答案:2 悬赏:80 手机版
解决时间 2021-11-12 19:05
- 提问者网友:原来太熟悉了会陌生
- 2021-11-12 04:52
String 和StringBuilder的区别以及相互转换
最佳答案
- 五星知识达人网友:春色三分
- 2021-11-12 06:32
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楼网友:千夜
- 2021-11-12 07:43
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消耗的内存空间小,但是执行效率低。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯