String,StringBulider,StringBuffer三者的区别
1.考察目标
- String和StiringBuilder的效率对比
- StringBulider和StringBuffer的效率对比
2.问题分析
-
问题:String和StringBuilder的本质区别是?
-
String是一个不可改变的字符序列
String s = "abc"; s = "def"; //这一步是记录了一个新的对象地址,“abc”内部的数据根本就没有发生改变 System.out.println(s);
-
StingBulider是一个可以改变的字符序列
StringBulider sb = new StringBulider("aaaaabbbbbccccc"); sb.delete(0,2); System.out.println(sb);
-
-
问题:常见的字符串拼接,该选择谁?
-
推荐使用的是StringBulider,因为拼接的效率高。
String:13562毫秒
String:47毫秒
-
-
问题:StringBulider和StringBuffer的区别是什么?
- StringBuffer和StringBuffer的功能是完全一致的
- 不同点
- StringBufer是jdk1.0出现的,线程安全(同步)的
- StriingBuilder是jdk1.5出现的,线程不安全(不同步)的
- 安全:效率低
- 不安全:效率高
3.问题扩展
- 在工作中你们如果在业务去拼接sql,使用String类型去接受的吗?
- 如果SQL语句拼接的内容较少的话,可以使用String拼接
- 但如果SQL语句拼接的内容很多,就应该使用StringBulider
4.应用场景
- 在项目中如果频繁的拼接字符串,推荐使用StringBulider