알려진 바와 같이 String
은 Java에서 불변입니다.사용법 StringBuffer 및 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;
것은 때문에, 새로운 String 객체가 그래서 실제로 나는 두 개의 문자열 개체를해야합니다, //1
에서 생성됩니다 문자열 불변이며, 첫 번째는 partner.getLastAccessDate();
이 포함되어 나는 String
를 돌려 다음과 같은 방법의 몸이 , 두 번째 것은 new SimpleDateFormat(DATE_PATTERN).format();
입니다. 오버 헤드가 좋지 않습니다. 어떻게 피할 수 있습니까?
String 대신 StringBuilder를 사용합니다. –
@Sharpedge StringBuffer를 사용하지 않는 이유는 무엇입니까? 하나는 변경 가능하므로 포함 된 문자열을 수정할 수 있습니다. –
from java docs ** "모든 문자열 버퍼에는 용량이 있습니다. 문자열 버퍼에 포함 된 문자 시퀀스의 길이가 용량을 초과하지 않는 한 새로운 내부 버퍼 배열을 할당 할 필요가 없습니다. 내부 버퍼 오버 플로우되면 (자), 자동적으로 커집니다. 릴리스 JDK 5에서는,이 클래스에는 단일 thread의 StringBuilder 용으로 설계된 동등한 클래스가 추가되었습니다.이 클래스보다 우선적으로 StringBuilder 클래스를 사용합니다. 동기화를 수행하지 않기 때문에 더 빠릅니다. "** –