zoukankan      html  css  js  c++  java
  • 细说string和stringbuffer

    =========================================================================================

        在我看来,学习java最重要是要理解what(这东西是什么),why(为什么要用它),where(在哪用它),how(怎么用)。所以接下来,我都是以这样的思想来和大家交流,从最基础的知识讲起。如果有啥出错的,欢迎大家前来批评。本人虚心接纳。

    =========================================================================================

     一.what(什么是String)

          我们在前面已经了解过String类,它不同于基本类型,它是引用类型,这就注定了String并不像基本类型那么简单,它是一个类,有着很多方法,这里我们不讲方法,讲最基本的String创建。创建一个String字符串很简单,如下:

           String a="Hello word!";

         就这么简单,但这里要注意,我们一般喜欢这样用:

         

         这样看起来,好像是a的值改变了,放在基本类型当然是,只是String就不一样了,因为String是引用类型。所以a的值只不过是放在堆中数据的地址而已,当执行 a= "2"; 创建了一个新的对象 "2",而原来的 "1" 还存在于内存中,不过a的引用由对1变成了对2.。

      

    二.解决方法

         采用StringBuffer和StringBuilder:和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

          StringBuffer  a = new StringBuffer("Hello Word");

            

    注意:

        (1).StringBuffer 和 String 是有一定的区别的,首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!

       (2).StringBuffer 和 StringBuilder 长度可变;String长度不可变StringBuffer 线程安全 StringBuilder 线程不安全;StringBuilder 速度快。

     ===========================================================================

                                    用心查阅,有心分享,分享之际,互相指教,受益你我,何乐不为?

     ===========================================================================

  • 相关阅读:
    C# Thread.Sleep 卡死的问题解决方法
    GridView多行显示 TableAdapter没有Update 问题
    python zlib 压缩 解压 文件夹
    17、【Python】mac安装多个版本的python
    18、【常见算法】二叉树的遍历
    29、【C++基础】内存泄露
    17、【常见算法】topN问题
    16、【常见算法】查找斐波那契数列的第N项
    15、【常见算法】实现sqrt函数
    14、【常见算法】数组分组排序
  • 原文地址:https://www.cnblogs.com/pla1949/p/8111088.html
Copyright © 2011-2022 走看看