循环体中用“+”拼接字符串-代码典型缺陷分析

转载 2015年07月09日 09:40:30

这里写图片描述
如上图所示,在一个循环体中用“+”动态拼接字符串,这是我们开发中非常的忌讳的方式,虽然它也能达到我们想要的效果但是性能上包括时间和内存都造成了很大程度的浪费,尤其是访问量很高的循环次数很多的情况下,很容易引起内存溢出。

   因为“+”拼接字符串,每拼接一次都是再内存重新开辟一个新的内存区域(堆里边),然后把得到的新的字符串存在这块内存,字符串如果很大,循环次多又多,那么浪费了很多时间和空间的开销,切记这一点。

这里写图片描述
正确的方法是用StringBuilder或者StringBuffer代替“+”,最好给一个预估好的初始值,默认开辟16个字节长度的内存空间,因为StringBuilder和StringBufffer每次都是在已有的内存空间追加的字符串,如果空间不足的话会重新开辟2(size+1)个字节长度的空间,然后把新的字符串存过来,所以尽可能的初始化一个预估的值。
如果大家用到类似sb.append(list.get(“value”))这样读取list的元素拼接成一个字符串的话,大家可以用Apache的common-lang工具包的StringUtils.join(list,”,”);来一步实现这个拼接而且还能指定分隔的符号,或者大家利用Google的Guava工具包里的Joiner.on(“,”).join(list);能实现一样的效果。

转载自:Java我人生(陈磊兴) 原文出处:http://blog.csdn.net/chenleixing/article/details/44315041

数组转List-典型代码缺陷分析(三)

以上为开发过程中,部分程序猿数组转list的“笨”方法,为什么说笨呢,因为这样做代码很繁琐不简练容易出错可读性叫差,而且还比较耗时,因为我要一个一个遍历数组,然后把这个元素添加到list中(不过以上代...

预处理语句的使用-代码典型缺陷分析(一)

BAD:          尽管这块代码能够正确执行,能够完成都应的业务逻辑的处理,但这个预处理语句使用是有问题的。因为这个SQL语句是动态拼接而来的,这样处理和Statement直接处理几乎一点...

代码典型缺陷分析—代码质量分析会上的报告

前几天事业部召开代码质量分析会,其中一个环节就是讲解一下一些产品的开发过程中一些代码缺陷,让我们的研发人员代码编写更加规范,是的,这个环节是我讲解的。         非常感谢部门经理给与我这个机会,...

典型的字符串处理代码(algs4)

Java的字符串AP(部分) Public   class       String                                String()          ...

典型的数组和字符串处理代码

表1.1.4典型数组处理代码注:仅实现了关键代码,数组以double型数组为例 找出数组中的最大值 double max = a[0]; for(int i = 1;i...
  • forTHQ
  • forTHQ
  • 2016年05月19日 14:08
  • 175

C陷阱与缺陷代码分析之第1章词法陷阱

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz   编译器中负责将程序分解为一个一个符号的部分,称为“词法分析器”。下面看一个例子: if(x > ...

代码缺陷静态分析工具FindBugs插件安装使用图解

1.     FindBugs介绍 FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软...

Java代码缺陷自动分析工具介绍

java代码缺陷自动分析工具介绍 黄锡波 java代码缺陷自动分析工具主要有:findbugs、pmd和checkstyle工具。这里重点介绍findbugs的使用,简要提及pmd和checkst...

C陷阱与缺陷代码分析之第2章语法陷阱

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz   陷阱1 理解函数声明 作者提出一个问题:有一个首地址为0的函数,该函数返回值类型为void,没有参数。...

java代码缺陷自动分析工具之FindBugs介绍

java代码缺陷自动分析工具之FindBugs介绍 1         FindBugs是什么? FindBugs 是一个java bytecode静态分析工具,它可以帮助ja...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:循环体中用“+”拼接字符串-代码典型缺陷分析
举报原因:
原因补充:

(最多只允许输入30个字)