StringBulider和String区别

StringBulider是可变字符串,修改字符串变量,使用实现更好
其实Java的字符串连接过程也是利用StringBulider实现的
例如:
String s1 = "a"; String s2="b";
String s = s1+s2;
等效于:s=new StringBulider().appends(s1).appends(s2)...toString()
只要还装得下,就不会反复创建新对象
但是:s+=s1,s+=s2;
却等效于
s= new StringBulider(s).appends(s1);
s= new StringBulider(s).appends(s2);
+=几次就相当于创建了几个StringBulider对象
结论:频繁+= 效率是非常低的!但字符串变量连+,性能和StringBulider等效

String s = "a"+"b";//都是字面量--编译时就能完成,运行直接用现成的
StringBulider sb = new StringBulider().append("a").append("b");
运行时才动态创建对象,动态修改字符数组的内容
总结
如果字符串都是字面量,运行期的效率比StringBulider高
-StringBuffer是线程安全的,同步处理的,性能稍慢(早)
-StringBulider是非线程安全的,并发处理的,性能稍快(晚)
举例子:公交车上StringBuffer售票员让每个先上车乘客找到座位后才继续让下一名乘客上车,虽然安全但是慢;而StringBulier售票员是个讲究效率的角色,让乘客直接都上来自己安排自己,所以速度有所提升,但不保证每个乘客都能找到作为,同时还有可能发生争抢的情况

猜你喜欢

转载自blog.csdn.net/qq_40531768/article/details/80565215