String today = someSimpleDateFormat.format(new Date());
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
int minute = rightNow.get(Calendar.MINUTE);
String hourString = String.valueOf(hour);
String minuteString = String.valueOf(minute);
if(hourString.length() == 1){
hourString = '0'.concat(hourString);
}
if(minuteString.length() == 1){
minuteString = '0'.concat(minuteString);
}
String dayHourMinute = today.concat("_").concat(hourString).concat("_").concat(minuteString);
我可以使用'+'运算符。如果我在程序中有很多字符串连接并且使用'+'运算符而不是'concat'方法或者反之亦然会有任何性能问题吗?
答案 0 :(得分:14)
无论哪种方式,你都会创造许多不必要的临时String
。强烈建议改用StringBuilder
。当您使用StringBuilder
运算符时,编译器实际上将使用临时+
实例,但它没有更广泛的视野来实现您想要实现的目标,并且在可以达到的程度方面受到限制优化StringBuilder
使用,因此您几乎总能更好地将其明确化。
答案 1 :(得分:4)
我认为两者都或多或少相同。但是,如果您担心性能,则应使用StringBuilder
进行字符串连接。
答案 2 :(得分:4)
是的,你应该避免明显的 初学者的错误 连接,每一个东西 程序员学习他们的第一年 工作。但在那之后,你应该是 更担心可维护性 和你的代码的可读性 性能。这可能是 关于放租最悲惨的事情 你自己被吸进去了 微观优化剧院 - 它 分散你的真实目标: 写出更好的代码。
答案 3 :(得分:4)
如果您没有性能问题,请考虑以下替代方案,我觉得更容易阅读:
String dayHourMinute =
String.format("%s_%s_%s", today, hourString, minuteString);
String evenBetter =
String.format("%s_%02d_%02d", today, hourString, minuteString);
// thanks to hardcoded!