代码示意如下:
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却没有报错。
谁知道是为什么
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却没有报错。
谁知道是为什么
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 //显然,这才是你的本意吧