问题1 : String和StringBuilder的本质区别是?
String是一个不可改变的字符序列
-
String s = "abc"; s = "def"; // 这一步是记录了一个新的对象地址, "abc"内部的数据根本就没有发生改变 System.out.println(s);
StringBuilder是一个可以改变的字符序列
-
StringBuilder sb = new StringBuilder("aaaaabbbbbccccc"); sb.delete(0,2); System.out.println(sb);
问题2 : 常见的字符串拼接, 该选择谁?
-
推荐使用的是StringBuilder, 因为拼接的效率高.
String : 13526毫秒
StringBuilder : 47毫秒
问题3 : StringBuilder和StringBuffer的区别是什么?
- StringBuffer和StringBuilder的功能是完全一致的
- 不同点:
- StringBuffer是jdk1.0出现的, 线程安全(同步)的
- StringBuilder是jdk1.5出现的, 线程不安全(不同步)的
- 安全 : 效率低
- 不安全 : 效率高