一直想做这3个之间的区别,当我们在开发过程中一般好少去考虑这些
1.在执行效率方面比较:stringbuilder > stringbuffer
2.stringbuffer 与 stringBuilder,它们都是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上进行操作的,不像string一样不断的创建对象来操作,所以速度快了
举个例子吧: String s = new String(“woshizifuchuan”); 当你要改变s的时候,比如改为s =s+”dsdsdsd”; 系统会重新创建一个字符串变量它的值为”woshizifuchuandsdsdsd”,然后把该字符串赋值给s. 当你这样的改变s的行为在一个循环里面,那么将会创建大量的中间变量,影响程序的运行效率:如:for(int i=0;i<100000;i++){ s=”a”; }
3.stringBuilder:线程非安全的
stringBuffer:线程安全的
当我们在字符串被多线程使用时,jvm不能保证stringBuilder线程是安全的,虽然它的速率快,但是可以保证stringbuffer是可以正确操作的,当然大多数情况下就是我们是在单线程下进行操作的,所以大多数情况下建议是用stringbuilder 而不用 stringbuffer的,就是速度的原因
对3个使用总结: 1.如果要操作少量的数量:=string
2.单线程操作字符串 下操作大量数据 =stringBuilder
3.多线程操作字符串 下操作大量数据 =stringBuffer