0
  • 最佳答案

    String类表示内容不可改变的字符串。

    而StringBuffer类表示内容可以被修改的字符串。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

    另外,String实现了equals方法,new String(“abc”).equals(new String(“abc”)的结果为true,

    而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false。

    StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。

    1328603694207459328  评论     打赏       comment莹
    • 拉大锯  回复 @comment莹
      可以从效率,线程安全,是否可改变的方向去回答。以及面试官可能会问为什么String不可以改变呢? 为什么要设计成这样子呢?
      拉大锯 2020-11-17 16:28   回复 1153952789488054272
  • String不可变,底层是char数组,加了final标识。

    StringBuffer和StringBuilder可变,StringBuffer是线程安全的。

    1247069679944470528  评论     打赏       lxxxx9
    • 拉大锯  回复 @lxxxx9
      你可以多说一点,包括为什么String要设计成final类,StringBuilder与StringBuffer的效率,实现方式等。但说多的前提是不要给自己挖坑哈。因为有些面试官会在你的回答里提问的。
      拉大锯 2020-11-01 12:22   回复 1153952789488054272
  • String 字符串,它是一个final类,不可以被继承。常量,内部维持着一个final的字符数组。当我们对字符串进行拼接时,其实是创建多个对象进行拼接。如果字符串内容需要经常改变,则不建议使用String,可以使用StringBuilder,或者StringBuffer


    StringBuilder 是线程不安全的,效率相对于StringBuffer高,适用于单线程对多字符串的操作。内部实现也是通过字符数组。

    StringBuffer 是线程安全的,效率相对于StringBuilder低,适用于多线程操作字符串,内部也是通过维护一个字符数组实现的。



    那同学们可能会混淆StringBuilder和StringBuffer哪个是安全,那个是线程不安全的了。


    StringBuilder-->BiuBiu...快呀!,快的话就线程不安全呀。加锁了就会慢嘛,所以知道这个是线程不安全的,那么StringBuffer是线程安全的咯。

    1153952789488054272  评论     打赏       拉大锯
    相关问题
    资质平平 · Android
    2025-02-20 09:14 92 100
    尖沙咀-段坤 · 项目
    2025-01-06 23:39 18 2
    雅澤yaduo · 领券联盟
    2025-01-03 20:39 37 50
    呆瓜小董 · webview
    2024-11-30 18:02 68 20
    阿肥 · 鸿蒙next
    2024-10-25 18:07 35 100
    尖沙咀-段坤 · 安卓
    2024-09-11 11:03 31 2
    YanLQ · AOSP
    2024-08-10 11:57 35 100
    断点 · vue
    2024-08-08 10:05 79 30