楼上别在摆渡里随便搞一段来糊弄人拉
其实String和StringBuffer很简单:
在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分钟还多。
1、String对象表示的是不可更改的字符串对象,如果需要修改String对象所表示的字符时,必须重新创建一个对象;
当修改操作频繁,或字符串的值很大时,会额外分配大量内存;
2、StringBuffer用来表示内容可以扩充和修改字符串的对象,也可以说,用于一个可变的字符序列,与String很类似,但是,通过调用一些方法可以改变字符序列的长度和内容。并且,在多线程中使用是安全的。