关于String 和 StringBuffer

if (StringUtils.isNotBlank(fsNum)){
sql.append("fsNum = '");
sql.append(fsNum);
sql.append("'");
}
if(StringUtils.isNotBlank(fiStatus)){
sql.append("fiStatus = '");
sql.append(fiStatus);
sql.append("'");

}

if (StringUtils.isNotBlank(fsNum)){
sql.append("fsNum = '"+fsNum+"'");
}
if(StringUtils.isNotBlank(fiStatus)){
sql.append("fiStatus = '"+fiStatus +"'");
}

请教,以上两种情况你会怎么选择呢,原因是什么呢

考虑性能的话,当然是第一种。

第二种又回到string的老路上去了,失去意义了。

话说

  1. 现在应该都用StringBuilder,而不是StringBuffer。

  2. 这样写流行些吧。
    [code="java"]
    sql.append("fsNum = '").append(fsNum).append("'");
    [/code]

两者现在已经没什么区别了, 直接字符串连接, 编译器会对代码进行优化, 内部还会使用Stringbuilder append 的。。。 :oops:

不考虑多线程的情况下,两种方式是一样的,编译器编译的时候会把string的+操作用StringBuilder.append来代替的

直接使用字符串累加就行,编译器会转换成StringBuilder。
详见:[url]http://kiral.iteye.com/blog/1040986[/url]

二楼正解,我做过测试:[url]http://www.oseye.net/blog/74[/url]

当使用多个+符号时,编译器是会进行优化的,并不会创建多个string的对象

如果是三次以内的字符串相加,可以用String,三次以上用Stringbuffer。