【java常见面试题】String、StringBuffer和StringBuilder的区别

    技术2022-07-10  95

    文章来源: 个人博客 翔仔年轻有力量:String、StringBuffer和StringBuilder的区别

    String类的基本特征

    被声明为final类,内部变量char value[]亦被final修饰指向的char value[]不可变,因而每次操作时都会生成新的String对象,而将旧的String对象丢弃,造成浪费典型的Immutable(不可变)类字符串常量池缓存

    注:String对象并非完全不可变,可以通过对String类的value字段进行修改,改变value属性的访问权限,以达成修改String对象的目的

    StringBuffer与StringBuilder

    共同点:

    二者的实现基于可变、可修改的char数组,默认大小为16.都继承自抽象类AbstractStringBuilder

    不同点:

    StringBuffer具备线程安全性,但StringBuffer效率低StringBuilder非线程安全,但StringBuilder效率高

    小结

    操作少量数据,对数据内容不常改变的业务场景适合用String类多线程环境下,对字符串操作频繁的业务场景使用StringBuffer类单线程环境下,对字符串操作频繁的业务场景使用StringBuilder类
    Processed: 0.017, SQL: 9