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

义乌网站建设zisou8阿里巴巴外贸订单网站

义乌网站建设zisou8,阿里巴巴外贸订单网站,wordpress付费阅读文章功能,竞价推广网站建设(1)一个可爱的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全的),该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类&#x…

(1)一个可爱的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全的),该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,他比StirngBuilder要快。

(2)在StringBulider上的主要操作是append和insert方法,可重载这些方法,以接受任意类型的数据。

我们查看StringBuilder的类图:

我们发现StringBuffer与StringBuild的父类完全一样。

StringBuilder(单线程)和StringBuffer(多线程)均代表可变的字符序列,方法是一样的,所以使用和StringBuffer一样。 

我们查看StringBuilder的源码如下所示:

 我们查看数据保存到哪里,我们查看它所存储的父类:

仍然和StringBuffer一样,数据保存在value数组里面。

我们发现StringBuilder的方法里面没有synchronized,没有同步的。

 

 

package com.ypl.StringBuilder_;public class StringBuild01 {public static void main(String[] args) {//1.StirngBuilder继承AbstractStringBuilder类//2.实现了 Serializable,说明StringBuilder的对象可以串行化(该对象可以网络传输,可以保存到文件里)//3.StringBuilder是final类,不能被继承//4.StringBuilder对象字符序列仍然是存放在其父类AbstractStringBuilder的char [] value。//因此,字符序列是堆中//5.StringBuilder没有做互斥的处理,即没有synchronized关键字,因此在单线程的情况下使用StringBuilder.StringBuilder stringBuilder = new StringBuilder();}
}

 String、StringBuffer和StringBuilder的比较

(1)StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样

(2)String:不可变字符序列,效率低,但是复用率(常量池里面有的内容可以被多个对象使用)高。

(3)StringBuffer:可变字符序列、效率较高(增删)、线程安全(synchorized同步代码块)

(4)StringBuilder:可变字符序列、效率最高、线程不安全

(5)如果从效率来看,StringBuilder的效率最高。StringBuilder>StringBuffer>String。

         如果从安全来看,StringBuffer的最安全。

(5)String使用注意说明:

package com.ypl.StringBuilder_;public class StringBuilder02 {public static void main(String[] args) {String s ="a"; //创建了一个字符串s+="b"; /*实际原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是”ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能 =>结论:如果我们对String做大量修改,不要使用String。*/}
}

我们来测试StringBuffer和StringBuilder和String的效率:

package com.ypl.StringBuilder_;public class StringStringBuilderStringBuffer {public static void main(String[] args) {String text="";long startTime=0;long endTime=0;StringBuffer buffer =new StringBuffer(text);StringBuilder builder = new StringBuilder(text);startTime = System.currentTimeMillis();for (int i=0;i<200000;i++){  //StringBuffer拼接20000次buffer.append(String.valueOf(i));}endTime=System.currentTimeMillis();System.out.println("StringBuffer的执行时间:+"+(endTime-startTime));startTime=System.currentTimeMillis();for (int i=0;i<200000;i++){   //StringBuilder拼接20000次builder.append(String.valueOf(i));}endTime=System.currentTimeMillis();System.out.println("StringBuilder的执行时间:"+(endTime-startTime));startTime=System.currentTimeMillis();for (int i=0;i<200000;i++){   //String拼接20000次text=text+i;}endTime=System.currentTimeMillis();System.out.println("String的执行时间:"+(endTime-startTime));}
}

我们运行之后如下所示:
 

我们发现StringBuilder的执行时间最短,然后是StringBuffer,最后是String。

使用的原则,结论:

1.如果字符串存在大量的修改操作,一般使用StringBuffer或StringBuilder

2. 如果字符串存在大量的修改操作,并在单线程的情况,使用StringBuilder

3.如果字符串存在大量的修改操作,并在多线程的情况,使用StringBuffer

4.如果我们字符串很少修改,被多个对象引用,使用String,比如配置信息等

StringBuilder的方法使用和StringBuffer一样。

http://www.yayakq.cn/news/753471/

相关文章:

  • 安丘网站建设多少钱珠海十大网站建设公司
  • html视频网站模板海淀区手机网站制作服务
  • 使用wordpress在ec2上建网站公司自己做网站多少费用
  • 济南做网站优化wordpress开启多站点后台没显示
  • 云南网站设计公司公司做网站的费用怎么记账
  • 四核网站建设个人网站模板 php
  • 建设银行网银盾官方网站下载免费做公司网站
  • 巨野住房和城乡建设局网站如何简单制作自己的网站
  • 网站域名备案要多少钱石家庄软件公司排名
  • 新开的网站怎么做推广建设网站需要些什么手续
  • 柳州网站建设找哪家网站开发设计书
  • 手机怎么自己建网站广州招投标中心官网
  • vs 2017网站开发php青岛建网站
  • 做公司网站的必要性ngrok做网站服务器
  • 网站专业制作河南省建设厅网站建设领域涉黑
  • 网页设计作品网站郑州软件开发工资
  • 企业网站建设管理平台怎么创一个网站
  • 向国旗敬礼做美德少年网站wordpress 简历主题
  • 海南城乡与建设厅网站企业网站 实名认证
  • 建设医疗网站用liferay做的网站
  • 手机网站开发公司外贸建站什么意思
  • 公司网站建设和推广个人网站建设法律规定
  • 建设一个视频网站己18做网站是怎么赚钱吗
  • 淄博网站排名优化报价平果信息网二手房
  • 2018年做网站赚钱上海互联网企业名单
  • 学做点心的网站2020网络游戏排行榜
  • 嘉盛集团官方网站seo网站优化方案书
  • 公司网站建设情况说明书门户网站的优点
  • 网站建设分金手指排名十北京优化推广
  • 帮别人建网站赚钱吗邢台吧 百度贴吧