• java基础之String、StringBuffer、StringBuilder



    简述

    • 相同点:

      1.都可以用来操作字符串

      2.都使用字符数组保存字符串

      3.都是final类型的
    • 不同点:

      1.对象是否可变:String对象不可变,StringBuffer/StringBuilder对象是可变的

      2.线程是否安全:String/StringBuffer是线程安全的,StringBuilder是非线程安全的

    上边说的很多人都清楚,面试宝典上也有的说,但为什么可变为什么不可变?线程的安全与否?估计有部分人还是不清楚的吧,下边就说一说

    详解

    • 可变不可变

      虽然上边三个都是final类型的,但是用来保存字符串的字符数组的修饰符却是不一样的,因此结局也就不一样了

      1.String类中:如下所示,String类被"final"修饰,所以String对象是不可变的

      private final char value[];

      2.StringBuilder和StringBuffer:

      char[] value
    • 是否线程安全

      1.String对象是不可变的,相当于常量,所以是线程安全的。

      2.StringBuffer对方法加了同步锁,所以是线程安全的。

      3.StringBuilder没有对方法加同步锁,所以是非线程安全的。
    • 如果不考虑线程,StringBuilder效率高于StringBuffer。

  • 相关阅读:
    《Mysql
    《Redis
    《pt-query-digest 剖析 Mysql 慢日志》
    《Redis
    《Redis
    《Redis
    《Redis
    《Redis
    python中__new__()与__init__()的区别
    Python常见综合面试题
  • 原文地址:https://www.cnblogs.com/gosun/p/7371728.html
Copyright © 2020-2023  润新知