欢迎来到天天文库
浏览记录
ID:8979816
大小:33.50 KB
页数:3页
时间:2018-04-13
《java循环与字符串代码优化》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Java循环与字符串代码优化 在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java; 在系统性能优化的时候循环和字符串处理一直是非常值得注意的地方。从心态上我们一定不能把自己的眼界放在十次或者是百次循环的层次上,也不能把自己要处理的字符串当做是有十个二十个字符。每次遇到循环都要假定这个循环是上万次的,每次要处理的字符串的时候一定要告诉自己这个字符串将来有可能是很大的。不要等到数据量真的达到十万、百万的级别之后再采取处理,那样的话成本的消耗就太大
2、了。本文将介绍关于Java代码中循环和字符串的优化方法,希望对读者有用。 关于循环 嵌套for循环中次数多的放在内侧,次数少的放在外侧。众所周知for循环需要定义一个循环变量来遍历每一个需要循环的对象,那么如果循环次数多的循环放在外侧那么无疑将会使得总体的变量增多,效率自然会降低。下面进行代码测试 publicclassTest{ publicstaticvoidmain(String[]args) { Longtime2Before=System.nanoTime(); for(inti=0;i<10;i++){ for(int
3、j=0;j<1000000;j++){ } } Longtime2After=System.nanoTime(); System.out.println("faster--->"+(time2After-time2Before)); Longtime1Before=System.nanoTime(); for(inti=0;i<1000000;i++){ for(intj=0;j<10;j++){ } } Longtime1After=System.nanoTime(); System.out.println("slower
4、--->"+(time1After-time1Before)); } } 在循环中只做与循环相关的事情,一些不必要的循环不要放到循环当中去做。比如在遍历集合的时候没有必要将取得集合大小放在循环中去做,完全可以放在集合的外边。效果上没区别,性能上差距巨大。 importjava.util.*; publicclassTest1{ publicstaticvoidmain(String[]args) { Listlist=newArrayList(); for(inti=0;i<1000000;i++){ list.add("lu
5、ck"+i); } Longtime1Before=System.nanoTime(); for(inti=0;i //System.out.println(list.get(i)); } Longtime1After=System.nanoTime(); System.out.println("use.size-->"+(time1After-time1Before)); Longtime2Before=System.nanoTime(); intn=list.size(); for(inti=0;i //System.o
6、ut.println(list.get(i)); } Longtime2After=System.nanoTime(); System.out.println("donotuse.size-->"+(time2After-time2Before)); } } 关于字符串 消除字符串连接,在程序中优先考虑使用StringBuffer或者StringBuilder代替String。一个字符串相当于一个匿名的String对象,如果在程序中拼接两个字符串那么会在内存中定义三个字符串空间。而StringBuffer或者StringBuilde
7、r就不会这么做,而是在原来已有的StringBuffer或者StringBuilder对象中进行修改。测试代码如下 publicclassTest3{ publicstaticvoidmain(String[]args) { longtime1Before=System.nanoTime(); Stringstr=""; for(inti=0;i<10000;i++){ str+=i; } longtime1After=System.nanoTime(); System.out.println("useString--->"+
8、(time1After-time1Before)); longtime2Before=System.nanoTime(); Stri
此文档下载收益归作者所有