Concat over'+'运算符用于字符串连接

时间:2009-12-07 11:57:50

标签: java string

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'方法或者反之亦然会有任何性能问题吗?

4 个答案:

答案 0 :(得分:14)

无论哪种方式,你都会创造许多不必要的临时String。强烈建议改用StringBuilder。当您使用StringBuilder运算符时,编译器实际上将使用临时+实例,但它没有更广泛的视野来实现您想要实现的目标,并且在可以达到的程度方面受到限制优化StringBuilder使用,因此您几乎总能更好地将其明确化。

答案 1 :(得分:4)

我认为两者都或多或少相同。但是,如果您担心性能,则应使用StringBuilder进行字符串连接。

答案 2 :(得分:4)

It doesn't really matter:

  

是的,你应该避免明显的   初学者的错误   连接,每一个东西   程序员学习他们的第一年   工作。但在那之后,你应该是   更担心可维护性   和你的代码的可读性   性能。这可能是   关于放租最悲惨的事情   你自己被吸进去了   微观优化剧院 - 它   分散你的真实目标:   写出更好的代码。

答案 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!