1.string s="aaa;"s+="bbb";这一个过程创建了几个对象?
有人说是三个,分别是aaa,bbb,aaabbb,也有人说是四个分别是aaa,bbb,一个临时的stringbuffer为aaabbb,和最终的string类型的aaabbb
2.stringBuffer s="aaa";s.append("bbb");这个以过程创建了几个对象?分别是哪几个

解决方案 »

  1.   

    网上google一堆。我说了别人会说我低级。
      

  2.   

    创建几个对象,您就别管了,只要记住,一个字符串,就是StringPool里的一个串,每修改一次,通常都会重新建一个搁里面(除非有重复的),然后给你引用地址,每次新建即为系统资源的额外开销。
    buffer从字面意思理解就是缓存,他内部维护了一个char[],每次字符串拼接操作,都是以操作它为基础,当然了,长度超过默认char[]的长度时是要重新建立一个两倍长度的新char[]的。
    所以经常对字符串进行拼接操作的地方(比如sql),要用到StringBuffer或Stringbuilder,效率优于String。至于这样写那样写建了几个对象,你让面试官自己扒开内存去数去。