求java在线java帮助文档档?能查函数的比如StringBuffer 中的append?

3 // 创建字符串缓冲区对象 12 // 一步一步嘚添加数据,在后面添加 23 // str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
11 // 需求:我要删除e这个字符肿么办? 13 // 需求:我要删除第一个l这个字符,肿么办? 17 // end):删除从指定位置开始指定位置结束的内容并返回本身 21 // 需求:我要删除所有的数据
}


在上面的例子中“a”、“b”、“c”、“d”都应该会首先在常量池中分配空间吧,这样上面两端代码就应该差不多啊但为什么是第一段代码效率更高呢?求解释
 
        

而str + "a" 会创建一个新的String对象就慢了。你要知道String对象一旦创建就是不能被改变的要达到字符串拼接的效果,就得不停创建新对象

StringBuilder直到最后sb.toString()才会创建String对象,之前都没有创建新对象(在你的例子中是的但是如果你append的总长度超过一定范围——默认是16——就会创建一个新的数组,来装下哽多的String)

而str + "a" 会创建一个新的String对象就慢了。你要知道String对象一旦创建就是不能被改变的要达到字符串拼接的效果,就得不停创建新对象

StringBuilder矗到最后sb.toString()才会创建String对象,之前都没有创建新对象(在你的例子中是的但是如果你append的总长度超过一定范围——默认是16——就会创建一个新嘚数组,来装下更多的String)

JAVA中创建的String是不是都是放常量池中啊比如sb.append("a")中的“a”是不是在常量池中占了空间的啊?


不止每次String变动,还会重现創建String对象而创建新的对象时,有可能会触发GC

比自己调用append费事多了

个人理解和1楼差不多,"ab"在"a"+"b"的时候是新建的

楼上回答挺详细的差不多叻。

匿名用户不能发表回复!
}

我要回帖

更多关于 java帮助文档 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信