String或StringBuffer

Joh*_*ohn 2 java

private void doShareEmp(pageBean UTIL, HttpServletRequest request, String page)
        throws Exception
{
    doAction(request, UTIL, page);
    String action = pageBean.getSafeRequestOrNullParameter(request, "DO");
    long empRecNum = UTIL.getNumValue("EMPLOYEE", "REC_NUM");
    if (action != null)
    {
        if (action.startsWith("US:"))
            unshareEmployee(request, UTIL, action.substring(3));
        else if (action.equals("SHARE") && empRecNum != 0)
            shareEmployee(request, UTIL, empRecNum);
    }
    ListBean list = UTIL.getListBean(request, "EMPSHARELIST", true);
    if (empRecNum != 0)
    {
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT FLDREC_NUM, FLDCOMPANY, FLDLOCATION, FLDDEPT FROM @SCHEMAEMPLVIEW WHERE FLDEMPLOYEE = ? AND FLDTABLE='SHARED' ORDER BY FLDCOMPANY, FLDLOCATION, FLDDEPT");
        ArrayList qryParms = new ArrayList();
        qryParms.add(new Long(empRecNum));
        list.setQuery(UTIL, sql, qryParms);
    }
    else
        list.init();
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我将查询附加到StringBuffer.

哪一个会更好?

  1. 的StringBuffer
  2. StringBuilder的

Aar*_*ver 12

StringBuilderStringBuffer从1.5开始就是单线程环境的替代品,所以请继续使用StringBuilder.如果您事后不打算对数据进行任何其他操作,请继续String.


Col*_*ert 8

StringBuffer仅在线程环境中需要并且如果您需要同步.在这似乎并非如此.

此外,你的字符串似乎是一个人定义的,简单String就足够了.StringBuilder当您通过附加内容修改"字符串"时,A 很有趣.如果您已拥有所有内容,则无需使用StringBuilder.

但是你已经可以在他们的javadoc上阅读所有这些信息了:

所述StringBuilder类通常应优先使用这一个,因为它支持所有相同的操作,但它是快的,因为它不执行同步.