用法StringBuffer和String?

时间:2014-12-24 11:18:21

标签: java string

众所周知,String在Java中是不可变的。我有以下方法的正文返回String

Partner partner = context.getComponent(ComponentNames.PARTNER_COMPONENT_NAME);
String lastAccesDate = partner.getLastAccessDate();
if(lastAccesDate == null) {
    return "";
}
lastAccesDate = new SimpleDateFormat(DATE_PATTERN).format(); //1
return lastAccesDate;

事情是由于字符串不变性,将在//1创建一个新的String对象,所以实际上我将有两个String对象,第一个包含partner.getLastAccessDate();,第二个包含new SimpleDateFormat(DATE_PATTERN).format(); {{1}} 1}}。开销不好,我该怎样避免呢?

2 个答案:

答案 0 :(得分:1)

在多线程的情况下使用StringBuffer(即,如果您需要线程安全,可变的字符序列),否则使用StringBuilder

答案 1 :(得分:0)

当你将第二个时间字符串分配给String对象lastAccessDate时,没有任何开销,因为自动垃圾收集器将释放第一个对象占用的空间,因为没有对象引用相同的空间。所以不用担心开销