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 速度快。

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

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

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

  • 相关阅读:
    Axis,axis2,Xfire以及cxf对比 (转)
    客户端调用服务器端三种方式
    webservice发送数据,取数据的方式
    强制关闭myeclipse出现的问题
    取当前系统的上月时间
    oracle 报Ora-01008错误:oracle 并非所有变量都已绑定的原因.TO_number();动态执行select..into..语句时
    ResultSetMetaData rsmd = rs.getMetaData()是什么意思?
    概率质量函数:怀孕周期的PMF
    Python 正则表达式
    TF-IDF
  • 原文地址:https://www.cnblogs.com/pla1949/p/8111088.html
Copyright © 2011-2022 走看看