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  评论     打赏       拉大锯
    相关问题
    幻影~ · 安卓
    2024-04-26 19:25 7 4
    deanhu · AOSP
    2024-04-25 21:53 3 10
    幻影~ · 提问
    2024-04-13 20:13 10 2
    幻影~ · 找工作
    2024-04-07 10:44 17 2
    幻影~ · 问题
    2024-03-31 17:20 7 2
    TONYGFX · AOSP
    2024-03-28 17:11 4 2