一.String类使用字符数组保存字符串,数组有final修饰,不可变.线程安全

    String a="hello";String b=new String("hello");

    第一种在栈内存定义了一个a对象的引用,指向堆内存的值"hello"的内存地址

    第二种先在栈内存创建一个"hello"对象,new String又产生了另外一个对象.第一个对象无人引用

    

    

   

   上图的解释:String在Java中使用了共享设计,在Java形成一个对象池,这个对象池可以保存多个对象,如果新实例化的对象已经在对象池中存在,就不在重复定义,直接从    对象池中取出使用。

二.StringBuilder类继承AbstractStringBuilder,底层也是字符数组保存字符串,可变.线程不安全

    //无参构造,默认长度16的字符数组

      public StringBuilder() {
            super(16);
        }

    //带参数的构造函数

     public StringBuilder(String str) {
          super(str.length() + 16);
          append(str);
        }

    //没有实现同步

       public StringBuilder append(String str) {
            super.append(str);
            return this;
        }

三.StringBuffer类继承AbstractStringBuffer,底层也是字符数组保存字符串,可变.线程安全

    //无参构造,默认长度16的字符数组

      public StringBuffer() {
            super(16);
        }

    //带参数的构造函数

     public StringBuffer(String str) {
          super(str.length() + 16);
          append(str);
        }

  

    //和StringBuilder的区别就是同步

        public synchronized StringBuffer append(String str) {
            super.append(str);
            return this;
        }

四.总结:

     1.如果要操作少量的数据用 = String    

2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

转载于:https://www.cnblogs.com/2nao/p/6507571.html

String ,StringBuilder,StringBuffer相关推荐

  1. String StringBuilder StringBuffer三者之间的区别~~~

    String StringBuilder  StringBuffer三者之间的区别~~~ String是字符串常量,它是典型的immutable类,被声明final class,所有的属性都是fina ...

  2. String ,StringBuilder,StringBuffer的区分

    String ,StringBuilder,StringBuffer的区分 一.区别 String是字符串常量,而StringBuffer和StringBuilder是字符串变量.由String创建的 ...

  3. Java 集合 --- String, StringBuilder, StringBuffer

    Java 集合 --- String, StringBuilder, StringBuffer String String的声明方式 String的不可变性 对比两个String StringBuil ...

  4. String StringBuilder StringBuffer 包装类 Date 类 枚举类

    String,StringBuilder,StringBuffer直接的区别是: String 不可变长的字符序列 StringBuilder 可变长的字符序列,线程不安全的,效率较高 StringB ...

  5. String,Stringbuilder,Stringbuffer及正则表达式

    掌握String StringBuilder StringBuffer类的区别 一.String String是不可变类,一旦String对象被创建之后,包含对象中的字符串序列都是不可改变的,直到类被 ...

  6. String , StringBuilder , StringBuffer

    String 首先从String底层看起 从底层代码被final修饰,我们能看出来,String是只读字符串,他的成员方法也都默认为final方法.所以String所引用的字符串内容不能被改变 Str ...

  7. String StringBuilder StringBuffer 对比 总结得非常好

    转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸 ...

  8. String/Stringbuilder/StringBuffer

    三个的运行速度:Stringbuilder>Stringbuffer>String String最慢是因为它是字符串常量,而其他两个是字符串变量. 其中stringbuilder是非线程安 ...

  9. stringbuffer常用方法_Java 处理字符串常用的类:String StringBuilder StringBuffer

    在Android/Java开发中,用来处理字符串常用的类有3种: String.StringBuilder.StringBuffer. 它们的异同点: 1) 都是 final 类, 都不允许被继承; ...

  10. String StringBuilder StringBuffer

    1,String 是不可变类 immutable 不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值.如JDK内部自带的很多不可变类:八大包装类和String等.     ...

最新文章

  1. android6.0 主题,Android 6.0 DatePickerDialog主题
  2. 关于ARM Cortex系列产品
  3. Linux之压缩与解压缩
  4. crawler_x-requested-with 请求头
  5. php正则获取标签,PHP通过正则匹配中文字符 过滤html标签 获取文本内容
  6. 使用SQLyog连接MySQL数据库
  7. Navicat工具怎么连接oracle数据库
  8. POJ 1947 Rebuilding Roads
  9. python分词原理_结巴分词原理
  10. 9小时速返地球!刚刚,神舟十三号返回舱平安降落,三位航天员“感觉良好”...
  11. 计算机键盘英语,电脑键盘打字时中英文如何切换?
  12. 强力推荐一款游戏十分好玩
  13. selenium页面跳转问题-QQ邮箱登录之后找不到元素
  14. 学习记录 - - 准备APS
  15. 支付宝支付(详细版)
  16. Keil 中“last line of file ends without a newline”的解决
  17. 写代码神器,自费送!
  18. okhttp https ip直连设置Host
  19. 微信小程序 —— 瀑布流简单写法(css3属性加wx:if判断轻松实现)
  20. 基于Java实现简单的在线 OJ 系统

热门文章

  1. Android中AVD(Android Virtual Device)不能启动的处理方法
  2. 模拟器显示屏上方的信号和电池图标不显示设置
  3. Building Seam 2.0 Application with NetBeans 6.1
  4. kafka丢数据问题方案(转载+整理+汇总)
  5. mariadb设置root初始密码
  6. scipy实现的共轭梯度法以及相关原理图解
  7. RabbitMQ 队列消息持久化
  8. 腾讯实习笔试:关于几个有序数组求交集的问题
  9. 求栈的长度的C语言函数,c – 编译器如何确定编译器生成的临时函数所需的堆栈大小?...
  10. 【蓝桥杯真题】地宫取宝(搜索-记忆化搜索详解)