use*_*252 6 java netbeans string-formatting
我从java开始,我尝试记录一些东西.
private static final Logger _logger = Logger.getLogger("my");
String car = "bmw";
String dog = "dog";
_logger.info(car + " text " + dog); // on this line Netbeans
Run Code Online (Sandbox Code Playgroud)
..在这一行上,Netbeans向我展示了黄色灯泡并说:在记录器中使用字符串连接效率低下
所以我点击"将字符串连接转换为消息模板",它将代码更改为:
_logger.log(Level.INFO, "[{0}] v{1} enabled", new Object[]{car, dog});
Run Code Online (Sandbox Code Playgroud)
那会引起问题.因为在日志中我看到:[{0}] v{1} enabled
如何修复它?
你有几个选择
1)使用String.format()_logger.log(Level.INFO, String.format("[%s] %s enabled", car, dog)).
2)使用StringBuilder.append()或String.concat()`.
例如: _logger.log(Level.INFO, new StrinBuilder(car).append(" text ").append(dog));
这基本上就是javac在优化中的作用.
3)忽略警告,因为效率与此无关.如果你真的关心速度,你就不会记录东西.记录需要很长时间,字符串格式和字符串附加之间的差异相对于写日志所花费的时间而言非常小.