String、StringBuffer、StringBuilder区别(Android每日面试题)

431 阅读1分钟

前言

看见即降服,这句话说的是一件事物,只要你看得到,你就能得到。

对我来说记录就是看见。

面试题不只是为了面试,更是为了帮助我们更深入地理解我们已知的知识。

String和StringBuffer/StringBuilder的区别

  • String是不可变的字符串
  • StringBuffer/StringBuilder是可变的字符串

StringBuffer/StringBuilder是可变的字符串

StringBuffer/StringBuilder是可变的字符串这个应该很好理解,因为我们创建StringBuffer/StringBuilder对象的时候可以通过append()方法来改变对象的内容。

StringBuilder sb=new StringBuilder("abc");
sb.append("efg");

上面代码中,一开始sb引用指向的内存地址的内容是abc,通过调用append方法后,sb引用指向的内存地址内容变为abcdefg

String是不可变的字符串

下面来说一下,为什么String是不可变的,大家也可以查看文章底部的参考链接,我在这里按我的理解总结一下。

其实很简单,主要有两个原因导致String的对象是不可变的:

1.String类的属性的修饰符不是final就是private,也就是说String没有提供类似像StringBuffer/StringBuilder的append方法来修改已经创建的String对象。

2.String是个final类,我们不能继承String类,也就无法添加类似append的方法来修改已经创建的String对象。

StringBuffer和StringBuilder的区别

一句话,StringBuffer是线程安全的,而StringBuilder是非线程安全的。

参考:

juejin.cn/post/684490… juejin.cn/post/684490…