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