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

点击此处
隐藏目录