当前位置: 首页 > news >正文

网站前端培训深圳seo优化公司

网站前端培训,深圳seo优化公司,网站上传 空间 数据库,怎么可以创建网站1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像Str…
1.  在执行速度方面的比较:StringBuilder >  StringBuffer   
2.  StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
3.  StringBuilder:线程非安全的StringBuffer:线程安全的当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。对于三者使用的总结:1.如果要操作少量的数据用 = String2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

如果你读过《Think in Java》,而且对里面描述HashTable和HashMap区别的那部分章节比较熟悉的话,你一定也明白了原因所在。对,就是支持线程同步保证线程安全而导致性能下降的问题。HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别也在于此,新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。如果你对此不太相信,可以试试下面的例子:

package com.hct.test;

import java.util.ArrayList; import java.util.Iterator; import java.util.List;

/** * @author: chengtai.he * @created:2009-12-9 上午09:59:57 */ public class StringBuilderTester { private static final String base = " base string. "; private static final int count = 2000000;

 public static void stringTest() { long begin, end; begin = System.currentTimeMillis(); String test = new String(base); for (int i = 0; i < count/100; i++) { test = test + " add "; } end = System.currentTimeMillis(); System.out.println((end - begin) + " millis has elapsed when used String. "); }

 public static void stringBufferTest() { long begin, end; begin = System.currentTimeMillis(); StringBuffer test = new StringBuffer(base); for (int i = 0; i < count; i++) { test = test.append(" add "); } end = System.currentTimeMillis(); System.out.println((end - begin) + " millis has elapsed when used StringBuffer. "); }

 public static void stringBuilderTest() { long begin, end; begin = System.currentTimeMillis(); StringBuilder test = new StringBuilder(base); for (int i = 0; i < count; i++) { test = test.append(" add "); } end = System.currentTimeMillis(); System.out.println((end - begin) + " millis has elapsed when used StringBuilder. "); }

 public static String appendItemsToStringBuiler(List list) { StringBuilder b = new StringBuilder();

  for (Iterator i = list.iterator(); i.hasNext();) { b.append(i.next()).append(" "); }

  return b.toString(); }

 public static void addToStringBuilder() { List list = new ArrayList(); list.add(" I "); list.add(" play "); list.add(" Bourgeois "); list.add(" guitars "); list.add(" and "); list.add(" Huber "); list.add(" banjos ");

  System.out.println(StringBuilderTester.appendItemsToStirngBuffer(list)); }

 public static String appendItemsToStirngBuffer(List list) { StringBuffer b = new StringBuffer();

  for (Iterator i = list.iterator(); i.hasNext();) { b.append(i.next()).append(" "); }

  return b.toString(); }

 public static void addToStringBuffer() { List list = new ArrayList(); list.add(" I "); list.add(" play "); list.add(" Bourgeois "); list.add(" guitars "); list.add(" and "); list.add(" Huber "); list.add(" banjos ");

  System.out.println(StringBuilderTester.appendItemsToStirngBuffer(list)); }

 public static void main(String[] args) { stringTest(); stringBufferTest(); stringBuilderTest(); addToStringBuffer(); addToStringBuilder(); } }

上面的程序结果如下: 5266 millis has elapsed when used String.  375 millis has elapsed when used StringBuffer.  281 millis has elapsed when used StringBuilder.  I   play   Bourgeois   guitars   and   Huber   banjos   I   play   Bourgeois   guitars   and   Huber   banjos  从上面的结果来看,这三个类在单线程程序中的性能差别一目了然,采用String对象时,即使运行次数仅是采用其他对象的1/100,其执行时间仍然比其他对象高出25倍以上;而采用StringBuffer对象和采用StringBuilder对象的差别也比较明显,前者是后者的1.5倍左右。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;当然,如果要保证线程安全,自然非StringBuffer莫属了。

除了对多线程的支持不一样外,这两个类的使用几乎没有任何差别,上面的例子就是个很好的说明。appendItemsToStringBuiler和appendItemsToStirngBuffer两个方法除了采用的对象分别为StringBuilder和StringBuffer外,其他完全相同,而效果也完全相同。

转:http://www.cnblogs.com/Fskjb/archive/2010/04/19/1715176.html
http://www.lbrq.cn/news/2624959.html

相关文章:

  • 做网站还需要搜狗吗seo优化就业前景
  • 网站可以做视频链接江门seo外包公司
  • 网页视频怎么下载下来高手优化网站
  • 做网站业务员如何跟客户沟通营销最好的方法
  • wordpress赞赏功能杭州seo百度关键词排名推广
  • 怎么用java做动态网站10000个免费货源网站
  • 东莞网站建设vipbaikeseo的优点
  • 顶呱呱做网站吗实时热搜榜
  • 郑州短视频拍摄制作公司seo综合查询国产
  • 哪些网站做简历合适公司调查公司
  • 网站建设的步骤百度快照是干嘛的
  • 肇庆东莞网站建设保定seo排名外包
  • 吴中区做网站的公司我在百度下的订单如何查询
  • wordpress自定义图片某一网站seo策划方案
  • 免费网站怎么做软文编辑
  • 域名解析网站登录2023年新冠疫情最新消息
  • 福安网站建设网站代理公司
  • 聊城门户网站营销策划书范文案例
  • 做网站需要买ip地址吗软文300字介绍商品
  • 网站流量超限什么意思济宁百度推广公司
  • 百度网站推广价格查询百度推广怎么开户
  • 电商购物网站建设如何制作自己的公司网站
  • 武汉做网站哪家好企拓客软件怎么样
  • 企业免费网站被忽悠去做网销了
  • 大朗网站建设百度seo优化教程免费
  • 外贸平台哪个网站最好不收费网页设计基础
  • 龙岩任做网站的哪几个比较好怎么开一个网站平台
  • 互联网有多少网站百度指数可以用来干什么
  • 深圳企业网站设计店铺推广
  • 网站建设 推广人员广州网站制作服务
  • LINUX-批量文件管理及vim文件编辑器
  • 浅析 Berachain v2 ,对原有 PoL 机制进行了哪些升级?
  • 视觉语言模型的空间推理缺陷——AI 在医学扫描中难以区分左右
  • NVIDIA/k8s-device-plugin仓库中GPU无法识别问题的issues分析报告
  • 小程序省市级联组件使用
  • 阿里云 Flink