代码示意如下:
String sql="";
for (int i =0;i<para.length;i++){
{
   sql = sql+para[i][0]+para[i][1];}
如果使用String类型则一切正常,后来为了提高效率
改成
StringBuffer sql= new StringBuffer();
for (int i =0;i<para.length;i++){
{
   sql.append(sql).append(para[i][0]).append(para[i][1]);}
当para比较长的时候就会出现java.lang.OutOfMemoryError问题,而同样条件上使用String却没有报错。
谁知道是为什么

解决方案 »

  1.   

    改成
    StringBuffer sql= new StringBuffer("");
    for (int i =0;i<para.length;i++){
    {
       sql.append(para[i][0]);
       sql.append(para[i][1]);
    }sql.append(sql).append(para[i][0]).append(para[i][1]); //这个即使不溢出最终的结果也是不对的,又没有发现,每次sql都会被重新追加,就像几何级数一样
    比如已开始sql为1,假设para[i][0]一直为2,不随i变,para[i][1]一直为3,也不随i变
    看一下你的执行结果
    第一次循环
    sql = 123
    第二次循环
    sql = 123,123,2,3  //为了区分特意加上逗号,这应该不是你所要的结果吧,这实际和你第一次用String做的差别大了
    String做的那段代码,第二次循环
    sql = 123,2,3  //显然,这才是你的本意吧