在String中有“池”这么一个概念,不知道楼主知道不知道,比如说String str="hello" 这句话创建了两个对象,一个是str这个对象,另外一个就是在池中创建的"hello",接着str="helloMan",使用这句话的时候,虚拟机首先会去池中找有没有"helloMan"字符串,如果有的话,就拿池中的来用,没有的话就和之前那句代码一样处理,这样一来,无论从效率上还是内存消耗上来讲都是比较大的,因为String类是final类型的(这个可以参考API或者源代码)。
而StringBuffer就不一样了,是JAVA专门用来处理字符串拼接问题的一个类,StringBuffer
sb="a";
sb="ab";
第二句代码就不会创建新的实例了,而是在a的后面加了一个b。
以前我做过一个测试,就是测试一下String类和StringBuffer在处理字符串拼接的时候的效率问题,结果证明StringBuffer的处理速度是String类处理速度的1000倍,也就是说StringBuffer处理一秒的事情String类要处理16分钟还多。
|