Java面试题目记录——String、StringBuffer、StringBuilder有什么区别

76 阅读1分钟

面试时...

面试官:String、StringBuffer、StringBuilder有什么区别? 我:String是Java中的封装类,并且存在不可变性,因此在修改String的时候需要新建一个对象来存储,带来额外的开销 我:StringBuffer则是解决这个问题的工具类,无论修改、拼接等操作都是在一个对象中完成,但由于这个是线程安全的,因此操作的时候都会带来一定的性能损耗 我:StringBuillder则是解决StringBuffer性能问题而出现的,StringBuilder继承了StringBuffer的功能,是线程不安全的,但性能有了大大的提升,因此一般情况下还是推荐用StringBuilder 面试官:嗯,好,不过String这里不够全面,可以回去再补充一下 我:...好的

解答方法

  • String是Java中的Imuutable类,并且被声明为final class,所有属性都是final,因此内容都是不可变的,正因为不可变性,在修改、拼接String等操作的时候需要新建一个对象来存储,带来额外的开销
  • StringBuffer则是解决这个问题的工具类,无论修改、拼接等操作都是在一个对象中完成,但由于这个是线程安全的,因此操作的时候都会带来一定的性能损耗
  • 在JDK1.5中,新增了StringBuillder来解决StringBuffer性能问题,StringBuilder继承了StringBuffer的功能,是线程不安全的,但性能有了大大的提升,因此一般情况下还是推荐用StringBuilder