最近在复习 Java 基础的时候,看到了 String 这块的内容,我突发奇想,可以将 String、StringBuffer、StringBuilder 这些知识点整合在一起记忆。我之前背的那个答案其实有点琐碎,而且不太好理解,还繁杂,所以我基本今天背了明天忘,后天忘的一干二净。就像这种:
所以我看了几篇关于String、StringBuffer、StringBuilder 的相关文章,然后写了一个我自己的回答,这样就不容易忘了。
我的回答思路
String、StringBuffer、StringBuilder 都是处理字符串的3个类,这3个类各有优缺点,在实际中,我们可以根据自己的情况来选择用哪个类。
首先是 String 类。如果你在 String 类中创建一个对象,那么这个对象是不可变的。也就是说,你一旦想修改这个对象(字符串),那就没办法了,你就只能在 String pool 中新创建一个对象了。
但是 StringBuffer 和 StringBuilder 就不同。StringBuffer 类和 StringBuilder 类创建的对象是可变的。这就意味着你可以再原位置上对数据进行修改,而不用像 String 类那样要在 String pool 中创建新对象。StringBuffer 类和 StringBuilder 类其实也有区别,StringBuffer 类的大部分方法都加锁了,保证了多线程的安全性。而 StringBuilder 类的方法是不加锁的,所以执行效率比 StringBuffer类高一点。
心得
我之前死记硬背这些知识点,所以理解不了,然后觉得String的知识很多很复杂。现在来看,我其实是不想动脑子,就是无脑记忆,这种的话记了容易忘,而且根本理解不了。当我真正跳出舒适圈,用脑子去自己思考,总结,内化后,我就会发现这些知识很简单,没我之前想的那么复杂。