java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧

java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧

ID:30777363

大小:208.51 KB

页数:20页

时间:2019-01-03

java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧_第1页
java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧_第2页
java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧_第3页
java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧_第4页
java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧_第5页
资源描述:

《java程序优化:字符串操作、基本运算方法等优化策略-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java程序优化:字符串操作、棊木运算方法等优化策略-编程开发技术Java程序优化:字符串操作、基本运算方法等优化策略原文出处:IBM-周明耀字符串操作优化字符串对象字符串对象或者其等价对象(如char数组),在内存中总是占据最大的空间块,因此如何高效地处理字符吊,是提高系统整体性能的关键。String对象可以认为是char数组的延仲和进一步封装,它主要由3部分组成:char数组、偏移量和String的t度。char数组表示String的内容,它是String对象所表示字符串的超集。String的真实内容还需要由偏移量和长度在这个char数组中进行定位和截取。Str

2、ing有3个基本特点:1.不变性;2.针对常量池的优化;3.类的final定义。不变性指的是String对象一旦生成,则不能再对它进行改变。String的这个特性可以泛化成不变(imniutEiblc)模式,即一个对象的状态在对象被创建Z后就不再发生变化。不变模式的主要作用在于当一个对彖需要被多线程共享,并冃访问频繁时,可以省略同步和锁等待的时间,从而大幅提高系统性能。针对常量池的优化指的是当两个String对象拥有相同的值吋,它们只引用常量池中的同一个拷贝,当同一个字符串反复出现吋,这个技术可以大幅度节省内存空间。下面代码strkstr2>str4引用了相同的地址

3、,但是str3去卩重新开辟了一块内存空间,虽然str3单独占用了堆空间,但是它所指向的实体和strl完全一样。代码如下清单1所示。清单1.示例代码publicclassStringDcmo{publicstaticvoidmain(String[]args){Stringstrl=〃nbc〃;Stringstr2二〃abc〃;Stringstr3二newString(〃abc〃);Stringstr4二strl;System,out.println(z,isstrl=str2?,,+(strl==str2));System.out.println(〃isstrl=s

4、tr3?z/+(strl==str3));System,out.println(〃isstrlrefertostr3?〃+(strl.intern()==str3.intern()));Systcm.out.println("isstrl二str4〃+(stri二二str4));System,out.println(z,isstr2=str4z,+(str2==str4));System.out.println(〃isstr4refertostr3?z/+(str4.intern()二二str3.intern()));输岀如清单2所示。清单2.输出结果isstrl=

5、str2?trueisstrl=str3?falseisstrlrefertostr3?trueisstrl=str4trucisstr2=str4trueisstr4refertostr3?trueSubString使用技巧String的substring方法源码在最后一行新建了一个String对象,newString(offsct+bcginlndcx,endlndex-beginlndex,value);该彳亍代码的目的是为了能高效月•快速地共享String内的char数组对象。但在这种通过偏移量来截取字符串的方法中,String的原主内容value数组被复制

6、到新的子字符串屮。设想,如果原始字符串很大,截取的字符长度却很短,那么截取的子字符串中包含了原生字符串的所有内容,并占据了相应的内存空间,而仅仅通过偏移量和长度來决定口己的实际取值。这种算法提高了速度却浪费了空间。下而代码演示了使用substring方法在一个很大的string独享里而截取一段很小的字符串,如果釆用string的substring方法会造成内存溢出,如果釆用反复创建新的string方法可以确保正常运行。清单3.substring方法演示importjava.util.ArrayList;importjava.util.List;publicclass

7、StringDemo{publicstaticvoidmain(String[]args){List〈String>hemdler=newArrayList〈String>();for(inti=0;i<1000;i++){HugeStrh=newHugeStr();ImprovedHugeStrhl二newImprovedHugeStr();handler,add(h.getSubString(l,5));handler,add(hl.getSubString(l,5));ij}staticclassHugeStr{privateStringstr=newSt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。