日期:2014-05-17  浏览次数:20773 次

我有个哥们写sql语句喜欢用StringBuffer,你喜欢用什么啊?
我一般都用String ,哪个好点啊?

------解决方案--------------------
此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【dd121011】截止到2008-06-26 14:07:31的历史汇总数据(不包括此帖):
发帖数:109 发帖分:2511
结贴数:104 结贴分:2251
未结数:5 未结分:260
结贴率:95.41 % 结分率:89.65 %
值得尊敬
------解决方案--------------------
这不是喜好的问题,是与占多少内存有关的。
关键看你的sql是一个字符串还是多个部分拼成的,如果是一个字符串用String,多个部分拼成的就必须用StringBuffer。

另外,其实多数情况下,SQL是放在.properties文件里的。
------解决方案--------------------
探讨
这不是喜好的问题,是与占多少内存有关的。
关键看你的sql是一个字符串还是多个部分拼成的,如果是一个字符串用String,多个部分拼成的就必须用StringBuffer。

另外,其实多数情况下,SQL是放在.properties文件里的。

------解决方案--------------------
个人觉得还是StringBuffer要好些,可以根据条件进行SQL的拼接啊。效率要比你用+号连起来高
不过如果你的sql很固定,没有必要拼接,那就领当别论了。
------解决方案--------------------
去看下stringBuffer的源码就明白了
------解决方案--------------------
StringBuilder 更快。
------解决方案--------------------
效率不一样,
StringBuffer适用于字符串本身频繁变化的情况,比如经常附加一段新字符串到原字符串上;
String适合那些定义以后不怎么变化,只是引用他的情况
------解决方案--------------------
前几天正好也在研究这个问题,我把我找到的资料与你分享下:

(下面是转贴的)
使用String还是StringBuffer?

出于方便的考虑,我们在进行字符串的内容处理的时候往往会出现以下的代码:
        String result="";
        result+="ok";

这段代码看上去好像没有什么问题,但是需要指出的是其性能很低,原因是java中的String类不可变的(immutable),这段代码实际的工作过程会是如何的呢?通过使用javap工具我们可以知道其实上面的代码在编译成字节码的时候等同的源代码是:
        String result="";
        StringBuffer temp=new StringBuffer();
        temp.append(result);
        temp.append("ok");
        result=temp.toString();

短短的两个语句怎么呢变成这么多呢?问题的原因就在String类的不可变性上,而java程序为了方便简单的字符串使用方式对+操作符进行了重载,而这个重载的处理可能因此误导很多对java中String的使用。
下面给出一个完整的代码:
1. public class Perf { 
2.   public static String detab1(String s) 
3.   { 
4.     if (s.indexOf('\t') == -1) 
5.       return s; 
6.     String res = ""; 
7.     int len = s.length(); 
8.     int pos = 0; 
9.     int i = 0; 
10.     for (; i < len && s.charAt(i) == '\t'; i++)  
11.     { 
12.       res += "        "; 
13.       pos += 8; 
14.     } 
15.     for (; i < len; i++)  
16.     { 
17.       char c = s.charAt(i); 
18.       if (c == '\t') { 
19.         do {