什么时候可以用StringBuilder,什么时候不能用,希望高手指教。

解决方案 »

  1.   

    StringBuilder是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
      

  2.   

    StringBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。
      

  3.   

    如果可能,建议优先采用StringBuilder,因为在大多数实现中,它比 StringBuffer 要快。
    因为StringBuilder线程不同步,StringBuffer线程同步。
    这个在API中有明确说法。
      

  4.   

    因为StringBuilder线程不同步,StringBuffer线程同步,请问区别在哪里?就是个sql语句和线程有多大的关系,不好意思我线程没学好。
      

  5.   

    dao 的话,一般都是单线程
      

  6.   

    完全没必要自己去用StringBuilder拼,除非是在for循环中否则字符串“+”已经在编译的时候转换成StringBuilder.append了如果在for中“+”,编译的时候编译成在for中不断的new StringBuilder,影响效率,这时候在for外部自己new一个StringBuilder是有用的
      

  7.   


    线程和sql语句没什么关系,线程不安全就是说如果两个线程同时操作StringBuffer对象会有问题。
    不用太纠结这个,平时的应用,就使用StringBuidler效率也没差到哪。
      

  8.   

    hibernate中用原装sql操作数据库是否会牵扯线程问题,用StringBuffer肯定没有问题,现在最主要想知道的是用StringBuilder会不会出问题,什么情况下会出问题,出什么问题?
      

  9.   

    stringbuilder 比 stringbuffer 更好。
    可以看JDK文档 其中有一句记得是说  当仅使用append时 stringbuilder比stringbuffer更好一些
      

  10.   

    JDK中是宽泛的说法,我现在其实就是想知道在hibernate中session.createSQLQuery(sql);中写的sql语句中用什么好点?StringBuilder固然快点,想请教各位用这个是否会出什么问题。
      

  11.   

    用stringbuilder拼个sql不涉及线程,没啥问题,尽管用。SQL中设计参数时尽量使用占位符。
    一方面可以减少字符串拼装,
    另一方面可以尽可能的减少sql编译BTW,如果sql都是常量字符,用+会编译成一句常量字符,涉及到常量变量混合的情况,优先使用stringbuilder
      

  12.   

    StringBuilder真的能带来性能提升?!http://www.ticmy.com/?p=69
      

  13.   

    拼SQL还有个巧妙的办法
    是把MyBatis的SQL类挖出来,MyBatis的SQL动态SQL类设计的很不错
      

  14.   

    从来没想那么多,直接用string有啥不好??关注中
      

  15.   

    StringBuilder和StringBuffer是一个是同步的一个是不同步的...
      

  16.   

    针对String连接操作编译器生成的StringBuidler#append肯定是单个线程在操作,因此不会有线程安全问题。现在明白了。
      

  17.   

    StringBuffer是多线程的,效率明显低于StringBuilder,但二者功能是一样的。具体使用哪个要看lz的使用环境。如果是一般的单线程环境,建议使用StringBuilder
      

  18.   

    StringBuilder 非线程同步要快