远离八股文,面试大白话,通俗且易懂
看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。
java面试题汇总-目录-持续更新中
面试官:String和StringBuffer有什么区别?
这是原题,后来查了一些博客,总结出来的就是以现在的机器配置,String和StringBuffer性能差别并不是特别大,可以说忽略不计,但是特定的场景下肯定会有效率的差别。
回答:1.操作字符串的类有:String、StringBuffer、StringBuilder。
2.String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。
3.而StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。
(tips:想要安全就必须牺牲效率)
举例:如果你要在一个非常大的循环里面(比如说循环一万次),然后针对一个字符串进行不断的拼接。这时候如果使用的是String就意味着每次拼接都会生成一个新的对象,也就是一万个,而StringBuffer和StringBuilder就不会,他们只会在自己原有的对象基础上扩充空间。