zoukankan      html  css  js  c++  java
  • JAVA中String,StringBuffer,StringBuilder

       JAVA中String,StringBuffer,StringBuilder是有一些区别的;String主要应用在简单地保存一个字符串,逐步地遍历字符串,但其执行删除,修改,插入的操作时就有些麻烦;此时我们请出后两者,如StringBuffer,StringBuilder;说起后两者StringBuffer,StringBuilder主要在删除,修改,插入操作方面比String强,StringBuffer主要可以支持线程安全,可以同步,应用在多线程,游刃有余而StringBuilder不支持线程安全,因而不可以同步,但它比StringBuffer速度快,它们刚好与String在性能上各有千秋。JDK 文档均推荐使用StringBuilder,但我本人推荐使用StringBuffer,因为有了它,操作字符串就更加方便,更重要的是支持同步机制,因此牺牲一点内存空间也是值得的。

     另外还有,String,StringBuffer,StringBuilder这三者还有一些区别就是这三者均以值参数形式传递,只不过在传递过程中,Sting仍然以值传递,调用方法后其值不会发生变化,而StringBuffer,StringBuilder耍了点诡计,以值对象传递,调用方法后其值会发生变化。这点符合JAVA的相关设计规范。以下以代码范例说明这一点。

    public class Test {
     public static void println(String str,StringBuffer strBuffer,StringBuilder strBuilder)
     {
      str="以String方式输出Apple";
      strBuffer.append("以StringBuffer方式输出Apple");
      strBuilder.append("以StringBuilder方式输出Apple");
     }
    
     public static void main(String[] args) 
     {
       String str="Apple";
       StringBuffer sbf=new StringBuffer(); 
       sbf.append("Apple");
       StringBuilder sbd=new StringBuilder();
       sbd.append("Apple");
       System.out.println("调用前str="+str+",sbf="+sbf+",sbd="+sbd);
       println(str,sbf,sbd);
       System.out.println("调用后str="+str+",sbf="+sbf+",sbd="+sbd);
     }
    }

    上述代码运行结果:

    调用前str=Apple,sbf=Apple,sbd=Apple
    调用后str=Apple,sbf=Apple以StringBuffer方式输出Apple,sbd=Apple以StringBuilder方式输出Apple

  • 相关阅读:
    时间序列理论专题之二 时间序列的表达
    Ado.net Entity FrameWork的性能问题
    时间序列专题之三 时间序列的分段线性表示
    Tfs 2010使用小技巧
    时间序列理论专题之一 前言
    绝大多数新技术的学习,都是浪费生命
    Tfs2010简体中文版:翻译永远是问题
    MSsql 查询时默认是不区分大小写。 可以用语句强制sql语句查询时区分大小写 狼
    将.NET dll注册到GAC(Global Assembly Cache)中 狼
    js重载 狼
  • 原文地址:https://www.cnblogs.com/vigarbuaa/p/3008421.html
Copyright © 2011-2022 走看看