我有个哥们写sql语句喜欢用StringBuffer,你喜欢用什么啊?

dd121011 2008-06-26 02:07:34
我一般都用String ,哪个好点啊?
...全文
652 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
长笛党希望 2012-10-15
  • 打赏
  • 举报
回复
真心学习了。。
cgeng 2012-04-12
  • 打赏
  • 举报
回复
StringBuffer
kushirong 2008-06-26
  • 打赏
  • 举报
回复
要是比较两个字符的话。。用StringBuffer比用String 快1000倍
lm19890127 2008-06-26
  • 打赏
  • 举报
回复

StringBuffer要好,不过现在还是习惯用String
Ny-6000 2008-06-26
  • 打赏
  • 举报
回复
如果本身拼接的不是很多,那使用 string就行了。

过多就得考虑性能,使用另一个了。
goodcompany 2008-06-26
  • 打赏
  • 举报
回复
路过,学习了!
谢谢各位大侠!!!
pxpsoft 2008-06-26
  • 打赏
  • 举报
回复
以前用String 看来以后得用StringBuffer
fulianglove 2008-06-26
  • 打赏
  • 举报
回复
混杂了很多变量的话,还是stringbuffer看的清楚点
ws_hgo 2008-06-26
  • 打赏
  • 举报
回复
kankan......................
yami251139 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sagezk 的回复:]
JRE 1.6 后 + 的字符串连接操作也是拿 StringBuilder 实现的,最后再 toString() 所以没特殊需求使用 + 就可以,性能跟 StringBuilder 差不多。所谓使用 + 浪费计算资源是老皇历了。
[/Quote]

所以说技术要用新的好啊


看看那jdk1.4用stringbuffer。。。
册~那~~
差距啊这就是。。。
sagezk 2008-06-26
  • 打赏
  • 举报
回复
JRE 1.6 后 + 的字符串连接操作也是拿 StringBuilder 实现的,最后再 toString() 所以没特殊需求使用 + 就可以,性能跟 StringBuilder 差不多。所谓使用 + 浪费计算资源是老皇历了。
yami251139 2008-06-26
  • 打赏
  • 举报
回复
还是hibernate对对象做操作来的好。。。
为了一句sql
调试个几十遍是常有的事情。。。。
@()#&¥(@#&)¥@
yami251139 2008-06-26
  • 打赏
  • 举报
回复
给你看段我们现在在改的stringbuffer。。。
==================================================================
StringBuffer q = new StringBuffer();							//バッファ
String pdtnm_tableName = CssDAO.getWithDBO(GmPdtnm.TABLE_NAME); //PDT名称テーブル名の保存

// PDT名称DBのフィールド名称配列
String [] pdtnm_fields = new String [] {
GmPdtnm.pdtkind, GmPdtnm.cd1, GmPdtnm.cd2, GmPdtnm.cd3,
GmPdtnm.snm1, GmPdtnm.snm2, GmPdtnm.nm, GmPdtnm.entdttm,
GmPdtnm.dttm, GmPdtnm.who,
};

// Select句の作成
q.append("SELECT ");
for(int i = 0; i < pdtnm_fields.length; i++){
q.append(pdtnm_fields[i]).append(", ");
}
q.append(" CASE WHEN ").append(GmPdtnm.pdtkind).append("=").append(GmPdtnm.PDTKIND7_PDT);
q.append(" THEN LPAD(TRIM(").append(GmPdtnm.cd1).append("),2,'0') ");
q.append(" ELSE ").append(GmPdtnm.cd1).append(" END AS cd1Sort,");
q.append(" LPAD(").append(GmPdtnm.pdtkind).append(",2,'8') AS SORTKEY ");

// From句の作成
q.append(" FROM ").append(pdtnm_tableName).append(" ");

// Where句の作成
q.append(" WHERE NOT ( ").append(GmPdtnm.pdtkind).append("=").append(GmPdtnm.PDTKIND7_PDT);
q.append(" AND ").append(GmPdtnm.cd1).append("=").append(GmPdtnm.PDTKIND7_PDT).append(") ");
if (searchCondition != null) {
String searchCondition_pdtkind = (String)searchCondition.get(PdtnmScreenParams.Pdtkind);
String searchCondition_snm1 = (String)searchCondition.get(PdtnmScreenParams.Snm1);


String searchCondition_snm2 = (String)searchCondition.get(PdtnmScreenParams.Snm2);

boolean b_where = false;
// PDT種別条件の付加
if ( searchCondition_pdtkind != null && searchCondition_pdtkind.length() > 0){
b_where = MasterCommon.EditWildCard(q, GmPdtnm.pdtkind, searchCondition_pdtkind, b_where);
}
if ( searchCondition_snm1 != null && searchCondition_snm1.length() > 0){
b_where = MasterCommon.EditWildCard(q, GmPdtnm.snm1, searchCondition_snm1, b_where);
}

if ( searchCondition_snm2 != null && searchCondition_snm2.length() > 0){
b_where = MasterCommon.EditWildCard(q, GmPdtnm.snm2, searchCondition_snm2, b_where);
}

}

// Order by句の作成
q.append("order by SORTKEY,cd1Sort");
q.append(", ").append(GmPdtnm.cd2);
q.append(", ").append(GmPdtnm.cd3);
















=====================================


他让我觉得stringbuffer是大便。。。
他让我觉得string是王道。。。
(@#……¥*(@#……¥(*)#@……
zsmud 2008-06-26
  • 打赏
  • 举报
回复
string 不可变
StringBuffer可变,省内存
w111222j 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maxel 的回复:]
个人觉得还是StringBuffer要好些,可以根据条件进行SQL的拼接啊。效率要比你用+号连起来高
不过如果你的sql很固定,没有必要拼接,那就领当别论了。
[/Quote]

楼主去仔细看看string 和 stringbuffer的区别就知道了

当要拼SQL语句的时候,string在对字符串进行操作的时候,都会重新产生一个对像,而stringbuffer不会,而是在原有的上面直接加上去,用append()方法

当大量的字符串拼的时候,stringbuffer不会占内存些,呵呵
一般人都习惯用stringbuffer
serryzhao 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 spaceko2006 的回复:]
一个sql语句就用String,如果进行拼接操作的话,还是StringBuffer吧,确实省内存。能省点尽量省点。
[/Quote]

拼接我也用的string,呵呵,能占多少内存啊?
spaceko2006 2008-06-26
  • 打赏
  • 举报
回复
一个sql语句就用String,如果进行拼接操作的话,还是StringBuffer吧,确实省内存。能省点尽量省点。
xchh1220 2008-06-26
  • 打赏
  • 举报
回复
9楼的很详细

对于要拼接的SQL用StringBuffer
justforjoy 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sagezk 的回复:]
StringBuilder 更快!!!!!!因为省去了作线程同步的开销和时间。
[/Quote]


同意。另外现在sql都放在xml里面的比较多。
sql的开销更多在在数据库服务器那端吧?
个人认为,对数据库服务器来说,用String做sql效率最低。扯远了。
buyaowen 2008-06-26
  • 打赏
  • 举报
回复
俺们公司要求stringbuffer
毕竟是省点内存的
加载更多回复(14)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧