知识大全 Java循环与字符串代码优化

Posted

篇首语:但使书种多,会有岁稔时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java循环与字符串代码优化相关的知识,希望对你有一定的参考价值。

Java循环与字符串代码优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在系统性能优化的时候循环和字符串处理一直是非常值得注意的地方 从心态上我们一定不能把自己的眼界放在十次或者是百次循环的层次上 也不能把自己要处理的字符串当做是有十个二十个字符 每次遇到循环都要假定这个循环是上万次的 每次要处理的字符串的时候一定要告诉自己这个字符串将来有可能是很大的 不要等到数据量真的达到十万 百万的级别之后再采取处理 那样的话成本的消耗就太大了 本文将介绍关于Java代码中循环和字符串的优化方法 希望对读者有用

  关于循环

  嵌套for循环中次数多的放在内侧 次数少的放在外侧 众所周知for循环需要定义一个循环变量来遍历每一个需要循环的对象 那么如果循环次数多的循环放在外侧那么无疑将会使得总体的变量增多 效率自然会降低 下面进行代码测试

  public class Test public static void main (String [] args)   Long time Before=System nanoTime();  for (int i= ; i< ;i++ )   for (int j= ; j< ;j++ )

      Long time After=System nanoTime();  System out println( faster > +(time After time Before));

  Long time Before=System nanoTime();  for (int i= ; i< ;i++ )   for (int j= ; j< ;j++ )

      Long time After=System nanoTime();  System out println( slower > +(time After time Before)); 

  在循环中只做与循环相关的事情 一些不必要的循环不要放到循环当中去做 比如在遍历集合的时候没有必要将取得集合大小放在循环中去做 完全可以放在集合的外边 效果上没区别 性能上差距巨大

  import java util *;public class Test  public static void main (String [] args)   List<String> list=new ArrayList<String>();  for(int i= ;i< ;i++)   list add( luck +i);  

  Long time Before=System nanoTime();  for(int i= ;i<list size();i++)  // System out println(list get(i));    Long time After=System nanoTime();  System out println( use size > +(time After time Before));

  Long time Before=System nanoTime();  int n=list size();  for(int i= ;i<n;i++)  // System out println(list get(i));    Long time After=System nanoTime();  System out println( do not use size > +(time After time Before));

  

  关于字符串

  消除字符串连接 在程序中优先考虑使用StringBuffer或者StringBuilder代替String 一个字符串相当于一个匿名的String对象 如果在程序中拼接两个字符串那么会在内存中定义三个字符串空间 而StringBuffer或者StringBuilder就不会这么做 而是在原来已有的StringBuffer或者StringBuilder对象中进行修改 测试代码如下

  public class Test  public static void main (String [] args)   long time Before=System nanoTime();  String str= ;  for(int i= ;i< ;i++)   str+=i;    long time After=System nanoTime();  System out println( use String >  +(time After time Before));

  long time Before=System nanoTime();  StringBuilder sbuilder=new StringBuilder();  for(int i= ;i< ;i++)   sbuilder append(i);    long time After=System nanoTime();  System out println( use StringBuilder >  +(time After time Before));

  long time Before=System nanoTime();  StringBuffer stringBuffer=new StringBuffer();  for(int i= ;i< ;i++)   stringBuffer append(i);    long time After=System nanoTime();  System out println( use StringBuffer >  +(time After time Before)); 

  需要说明的是在StringBuffer和StringBuilder之间如果需要考虑选其一的话原则很简单 前者是线程安全的后者是线程不安全的 换句话说后者比前者更快 综上所述如果单单从性能上考虑的话从高到低依次是 StringBuilder > StringBuffer > String

cha138/Article/program/Java/hx/201311/25533

相关参考

知识大全 Java中利用Reflection API优化代码

Java中利用ReflectionAPI优化代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 java密码加密与解密

  以下两个类可以很方便的完成字符串的加密和解密  加密CryptHelperencrypt(password)  解密CrypHelperdecrypt(password)  代码如下  Crypt

知识大全 java 字符串相减(很简单的一个方法)

本篇文章是对java中关于字符串相减的一个简单的方法进行了介绍需要的朋友参考下   有个比较简单的方法复制代码代码如下:cha138/Article/program/Java/JS

知识大全 用Java的循环实现矩阵乘法代码分享

用Java的循环实现矩阵乘法代码分享  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  public

知识大全 java去除字符串空格几种做法

  超初我用的只是最简单的  网上搜索的都是什么replace("""") 感觉很莫名其妙  你使用replaceAll("""")方法时必须有返回值类于  代码如下Stringstr="A

知识大全 Java程序性能优化(2)

Java程序性能优化(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  八如果只是查找单个字符

知识大全 Java程序性能优化(1)

Java程序性能优化(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一避免在循环条件中使用

知识大全 关于java.util.regex 包中新增字符替换方法的比较

  代码如下:  importjavautilregex*;    publicclassregex     publicregex()          publicstaticStringrepl

知识大全 使用javascript过滤html的字符串(注释标记法)

本篇文章是对使用javascript过滤的字符串进行了详细的分析介绍需要的朋友参考下 复制代码代码如下:cha138/Article/program/Java/JSP/201311

知识大全 php的数组与字符串的转换函数整理汇总

以下是对php中的数组与字符串的转换函数进行了详细的整理汇总需要的朋友可以参考下   将一个字符串转化为数组str_split()用于将一个字符串转化为数组语法复制代码代码如下:str_sp