저는 이전에 Java를 사용할 때 긴 문자열을 연결하는 데 사용되는 StringBuffer라는 클래스가 있다는 것을 알았습니다. C#으로 전환한 후에는 StringBuilder라는 비슷한 기능을 가진 클래스도 있습니다. 약어는 sb이며 기억하기 매우 쉽습니다.
나중에 Java로 다시 전환했을 때 Java에도 StringBuilder가 있다는 것을 알게 되었는데, StringBuffer 다음에 StringBuilder가 도입된 이유가 궁금했습니다.
C#과 같은 Java의 StringBuilder는 스레드로부터 안전하지 않지만 이전 StringBuffer에는 특정 스레드 안전 속성이 있는 것으로 나타났습니다. 물론 StringBuilder가 도입된 이유는 멀티 스레드 상황에서 사용할 필요가 없기 때문입니다.
일반적인 StringBuilder(또는 StringBuffer) 사용 사례는 다음과 같습니다.
public String toString() { return new StringBuilder() .append("Name: " + name) .append("Foo: " + foo) .append("Bar: " + bar) .toString(); }
이 경우 StringBuilder는 클래스 멤버가 아니며 단지 지역 변수일 뿐 전혀 아닙니다. 멀티스레딩 문제는 말할 것도 없습니다.
결과적으로 StringBuilder의 도입으로 성능이 크게 향상되었으며 보안 문제도 전혀 발생하지 않았습니다...
StringBuffer와 StringBuilder의 차이점에 대한 더 많은 기사를 보려면 Java의 경우 PHP 중국어 웹사이트를 주목하세요!