循环中string的连接

  • Post author:
  • Post category:其他


  • 1、场景

在调试某设备接口时,需要做xml格式的接口转发,添加多个设备终端时,用到循环连接字符串:

String memberList = null;
for (DeviceHomeDO deviceHomeDO : homeList) {
    memberList = memberList + "<Member>\n" + "<id>" + (++i) + "</id>\n" +
            "<terminalNo>" + deviceHomeDO.getMcuTerminalId() + "</terminalNo>\n" +
            "<isChairman>false</isChairman>\n" + "</Member>";
    }

idea提示用StringBuffer或者StringBuilder的append()方法连接。

  • 2、机理

原因是:每次循环里的字符串+连接,都会新产生一个string对象,在java中,新建一个对象的代价是很昂贵的,特别是在循环语句中,效率较低。故在循环中一般使用StringBuffer.append来代替string的+运算符。

使用StringBuffer进行替换,需要注意的是StringBuffer.append会报空指针异常

正确的初始化方式:StringBuffer memberList = new StringBuffer();



版权声明:本文为eaglepe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。