我正在通过PMD规则AppendCharacterWithChar.它说避免在StringBuffer.append中将字符连接成字符串.
StringBuffer sb = new StringBuffer(); // Avoid this sb.append("a"); // use instead something like this StringBuffer sb = new StringBuffer(); sb.append('a');
我真的需要这个PMD规则吗?以下两段代码之间的性能差异有多大?
String text = new StringBuffer().append("some string").append('c').toString(); String text = new StringBuffer().append("some string").append("c").toString();
解决方法
将字符附加为char将始终比将其作为String附加更快.
但性能差异是否重要?如果你只是做一次,它不会.如果它在一个周期内重复其身体一百万次,那么是的,这可能很重要.
如果你在编译时已经有了这个字符,只需要把它作为一个字符.如果它存储在具有String类型的变量中,则不要打扰访问它.用String.charAt(0)或其他一些方法,只需要附加String.
一边注意:
喜欢StringBuilder
类到StringBuffer
. StringBuilder更快,因为它的方法不同步(在大多数情况下你不需要).
一边注2#
这不会编译:
String text = new StringBuffer().append("some string").append('c');
append()返回StringBuffer进行链接.你需要调用toString():
String text = new StringBuffer().append("some string").append('c').toString();