说明:下例中,反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行 append 操作,最后通过 toString 方法返回 String 对象,造成内存资源浪费。
反例:
循环中的字符串连接。当每个String串联复制整个String时,通常最好将其替换为对StringBuilder.append()或StringBuffer.append()的显式调用。
的参数的字符串串联。这样的调用可以有益地转换为对现有StringBuffer / Builder / Appendable的链接追加调用,从而节省了额外的StringBuffer / Builder分配的成本。 此检查将忽略编译时评估的String串联,将其转换为链接的append调用只会降低性能
StringBuilder 的内容被更新,但从未被查询过 检查信息:已读取但未写入或已写入但未读取的StringBuilder或StringBuffer字段或变量。 这种不匹配的读写是没有意义的,并且可能表示死的、不完整的或错误的代码。