zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    11计划
    Tomcat Server.xml配置详解
    maven常用配置
    [转]Maven的内置属性说明
    PL/SQL Developer使用技巧、快捷键
    01_jeecms建站
    01_bootStrap中Tab页签切换
    利用Java实现文件中的关键字查询
    SVN服务器搭建
    MyEclipse安装插件的几种方法
  • 原文地址:https://www.cnblogs.com/gosun/p/7371728.html
Copyright © 2011-2022 走看看