美文网首页Java专题Android面试题解析
面试题:String,StringBuffer 和StringB

面试题:String,StringBuffer 和StringB

作者: 千夜零一 | 来源:发表于2020-10-12 11:49 被阅读0次

    面试题:String , StringBuffer 和StringBuilder三者的区别,以及如何实现一个字符串倒序?

    答案

      String 的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer或者StringBuilder。StringBuffer 和 StringBuilder主要区分是在线程安全和执行速度上。StringBuffer线程安全但速度慢,StringBuilder非线程安全但速度快。


    字符串倒序

    字符串“abcde”通过写一个函数不让调用第三方的字符串,实现一个字符串倒序,比如字符串“abcde” 变成“edcba”

    答: String src = "ABCDEF ";
    String dst = new StringBuffer(src).reverse().toString();

    private String reverse(String src){
        return new StringBuffer(src).reverse().toString();
    }
    

    探究String和StringBuffer的区别

    String 字符串(长度不可变)
      String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。
      因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。


    探究StringBuffer 和 StringBuilder 类的区别

    StringBuffer 字符串变量(线程安全,但执行速度慢)
    StringBuilder 字符串变量(非线程安全,但执行速度快)

      StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

      由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。


    总结

      和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
      当对字符串进行修改的时候,特别是字符串对象经常改变的情况下,需要使用 StringBuffer 和 StringBuilder 类。
      StringBuffer 和 StringBuilder主要区分是在线程安全和执行速度上。StringBuffer线程安全但速度慢,StringBuilder非线程安全但速度快

    相关文章

      网友评论

        本文标题:面试题:String,StringBuffer 和StringB

        本文链接:https://www.haomeiwen.com/subject/souupktx.html