关于string,stringBuffer的区别是老生常谈了,下文将讲述在for循环中的内存和性能问题
/** * 1000000条,for循环中stringBuffer.append(j).的时间为150级别,str+=的级别时间超级长,1000条的时间为560 * 1000000条,for循环中频繁声明一个变量 str= 的使用时间为170级别,使用stringBuffer的时间为差点以为死循环了 * */ long startDate = System.currentTimeMillis(); StringBuffer stringBuffer = new StringBuffer(); String str = ""; for (int j = 0; j < 1000000; j++) { //str += j; //stringBuffer.append(j).append("哈哈哈"); StringBuffer stringBuffer2 = new StringBuffer(j); String str2 = j+""; } System.out.println(System.currentTimeMillis()-startDate);
* 测试String声明使用不改变 StringBuffer声明使用不改变,无论多少次for循坏,因为指向的都是同一个地址引用,时间级别为 3 6
* String声明使用改变 StringBuffer声明使用改变1000000条的时间级别为 200和差点以为死循环
* StringBuffer.append追加 +=追加性能发现时间依次为150级别 和差点以为死循环
综上所述,for循环里面需要声明变量不改变的随便哪一种性能无影响
声明变量改变的使用string
外部声明变量,for中追加的使用stringbuffer