iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中StringBuffer和StringBuilder_动力节点Java学院整理
  • 165
分享到

Java中StringBuffer和StringBuilder_动力节点Java学院整理

javastringbufferstringbuilder 2023-05-31 16:05:29 165人浏览 八月长安
摘要

下面先给大家介绍下String、StringBuffer、StringBuilder区别,具体详情如下所示:StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对Strin

下面先给大家介绍下String、StringBuffer、StringBuilder区别,具体详情如下所示:

StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringBuffer吧!

先说一下集合的故事,HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别也是如此,他们的原理和操作基本相同,区别在于StringBufferd支持并发操作,线性安全的,适 合多线程中使用。StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。

接下来,我直接贴上测试过程和结果的代码,一目了然:

 public class StringTest {    public static String BASEINFO = "Mr.Y";    public static final int COUNT = 2000000;        public static void doStringTest() {      String str = new String(BASEINFO);      long starttime = System.currentTimeMillis();      for (int i = 0; i < COUNT / 100; i++) {        str = str + "miss";      }      long endtime = System.currentTimeMillis();      System.out.println((endtime - starttime)          + " millis has costed when used String.");    }        public static void doStringBufferTest() {      StringBuffer sb = new StringBuffer(BASEINFO);      long starttime = System.currentTimeMillis();      for (int i = 0; i < COUNT; i++) {        sb = sb.append("miss");      }      long endtime = System.currentTimeMillis();      System.out.println((endtime - starttime)          + " millis has costed when used StringBuffer.");    }        public static void doStringBuilderTest() {      StringBuilder sb = new StringBuilder(BASEINFO);      long starttime = System.currentTimeMillis();      for (int i = 0; i < COUNT; i++) {        sb = sb.append("miss");      }      long endtime = System.currentTimeMillis();      System.out.println((endtime - starttime)          + " millis has costed when used StringBuilder.");    }        public static void doStringBufferListTest(List<String> mlist) {      StringBuffer sb = new StringBuffer();      long starttime = System.currentTimeMillis();      for (String string : mlist) {        sb.append(string);      }      long endtime = System.currentTimeMillis();      System.out.println(sb.toString() + "buffer cost:"          + (endtime - starttime) + " millis");    }        public static void doStringBuilderListTest(List<String> mlist) {      StringBuilder sb = new StringBuilder();      long starttime = System.currentTimeMillis();      for (Iterator<String> iterator = mlist.iterator(); iterator.hasNext();) {        sb.append(iterator.next());      }      long endtime = System.currentTimeMillis();      System.out.println(sb.toString() + "builder cost:"          + (endtime - starttime) + " millis");    }    public static void main(String[] args) {      doStringTest();      doStringBufferTest();      doStringBuilderTest();        List<String> list = new ArrayList<String>();      list.add(" I ");      list.add(" like ");      list.add(" BeiJing ");      list.add(" tian ");      list.add(" an ");      list.add(" men ");      list.add(" . ");        doStringBufferListTest(list);      doStringBuilderListTest(list);    }  } 

--结束END--

本文标题: Java中StringBuffer和StringBuilder_动力节点Java学院整理

本文链接: https://www.lsjlt.com/news/226742.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中StringBuffer和StringBuilder_动力节点Java学院整理
    下面先给大家介绍下String、StringBuffer、StringBuilder区别,具体详情如下所示:StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对Strin...
    99+
    2023-05-31
    java stringbuffer stringbuilder
  • Java中的UrlDecoder 和 UrlEncoder_动力节点Java学院整理
    一 URLEncoder HTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。有关 HTML 格式编码的更多信息,请参阅...
    99+
    2023-05-31
    urldecoder urlencoder ava
  • Java死锁_动力节点Java学院整理
    死锁是两个甚至多个线程被永久阻塞时的一种运行局面,这种局面的生成伴随着至少两个线程和两个或者多个资源。在这里我已写好一个简单的程序,它将会引起死锁方案然后我们就会明白如何分析它。Java死锁范例ThreadDeadlock.javapack...
    99+
    2023-05-31
    java 死锁 ava
  • Java多态(动力节点Java学院整理)
    什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象...
    99+
    2023-05-31
    java 多态 ava
  • Java中Random简介_动力节点Java学院整理
    Java中存在着两种Random函数:一、java.lang.Math.Random;  调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返...
    99+
    2023-05-31
    java random ava
  • Java 中HashCode作用_动力节点Java学院整理
    第1 部分 hashCode的作用  Java集合中有两类,一类是List,一类是Set他们之间的区别就在于List集合中的元素师有序的,且可以重复,而Set集合中元素是无序不可重复的。对于List好处理,但是对于Set而言我们要如何来保证...
    99+
    2023-05-31
    java hashcode
  • Java链接redis_动力节点Java学院整理
    要在Java程序中使用使用操作Redis,需要确保有Redis的Java驱动程序和Java设置在机器上。现在,让我们来看看如何设置Redis的Java驱动程序。 需要下载jedis.jar。请一定要下载它的最新版本。 需要包括jedis...
    99+
    2023-05-31
    java redis 链接
  • Java Map简介_动力节点Java学院整理
    Map简介将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关...
    99+
    2023-05-31
    java map ava
  • Java 线程池_动力节点Java学院整理
    线程池系统启动一个新线程的成本是比较高的,因为它涉及到与操作系统的交互。在这种情况下,使用线程池可以很好的提供性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。与数据库连接池类似的是,线程池在系统启动时即创建大量空...
    99+
    2023-05-31
    java 线程池 ava
  • Java内部类_动力节点Java学院整理
    内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和defau...
    99+
    2023-05-31
    java 内部类 ava
  • Java Set简介_动力节点Java学院整理
    1. 概述           Java 中的Set和正好和数学上直观的集(set)的概念是相同的。Set最大的特性就是不允许在其中存放的元素是重复的...
    99+
    2023-05-31
    java set ava
  • Java FileDescriptor总结_动力节点Java学院整理
    FileDescriptor 介绍FileDescriptor 是“文件描述符”。FileDescriptor 可以被用来表示开放文件、开放套接字等。以FileDescriptor表示文件来说:当FileDescriptor表示某文件时,我...
    99+
    2023-05-31
    java filedescriptor ava
  • Java数组优点和缺点_动力节点Java学院整理
      数组是Java语言的基本知识之一,在深入学习Java基础后,我们都知道那些容器,在之后,在我们学习、工作的过程中基本就是使用容器了,很少很使用数组,那么为什么还要有数组呢,我也是今天才遇到这个问题,专门的找资料学习了...
    99+
    2023-05-31
    java 数组 优缺点
  • JDBC简介_动力节点Java学院整理
    前言:什么是JDBC维基百科的简介:  Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。J...
    99+
    2023-05-31
    jdbc 简介 ava
  • Java中JDom解析XML_动力节点Java学院整理
    一、前言    JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Ja...
    99+
    2023-05-31
    jdom 解析 xml
  • Java中的PrintWriter 介绍_动力节点Java学院整理
    PrintWriter 介绍PrintWriter 是字符类型的打印输出流,它继承于Writer。PrintStream 用于向文本输出流打印对象的格式化表示形式。它实现在 PrintStream 中的所有 print 方法。它不包含用于写...
    99+
    2023-05-31
    java printwriter ava
  • Java中的关键字_动力节点Java学院整理
    Java中常用关键字:与数据类型相关(10)与流程控制相关(13)if: 表示条件判断,一般用法if(关系表达式),后跟else或{……}else: 条件转折,如if (关系表达式){语句块1}else{语句块2},如果...
    99+
    2023-05-31
    java 关键字 ava
  • Java中的FilterOutputStream 简介_动力节点Java学院整理
    FilterOutputStream 介绍FilterOutputStream 的作用是用来“封装其它的输出流,并为它们提供额外的功能”。它主要包括BufferedOutputStream, DataOutputStream和PrintSt...
    99+
    2023-05-31
    java filteroutputstream ava
  • Ehcache简介_动力节点Java学院整理
    使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存。CachingFilter功能可以对HTTP响应的内容进行缓存。1、主要特性     1. 快速.  &n...
    99+
    2023-05-31
    ehcache ava hcache
  • Java 中的 BufferedWriter 介绍_动力节点Java学院整理
    BufferedWriter 介绍BufferedWriter 是缓冲字符输出流。它继承于Writer。BufferedWriter 的作用是为其他字符输出流添加一些缓冲功能。BufferedWriter 函数列表 // 构造函数...
    99+
    2023-05-31
    java bufferedwriter buf
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作