개발/Java
StringBuilder, StringBuffer
하프킴
2021. 5. 18. 16:36
728x90
String과 StringBuffer/StringBuilder의 차이점은 String은 immutable 하다는 점이다.
즉 새로운 문자열을 할당하면, 그 전의 객체를 삭제한다.
String은 불변성을 가져 변하지 않는 문자열을 자주 읽어들이는 경우 String을 사용하면 좋은 성능 기대할 수 있음.
하지만 문자열 추가, 수정,삭제가 빈번하게 일어나면 mutable하게 할당하는게 유리할 수 있다.
StringBuffer/StringBuilder는 가변성 가지기 때문에, .append(), .delete() 등의 API를 이용하여 동일 객체내에서 문자열 변경이 가능함.
StringBuilder
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, Comparable<StringBuilder>, CharSequence
뮤터블한 문자열이다. StringBuffer와 API가 호환되지만, 동기화를 보장하지 않는다.
A mutable sequence of characters. This class provides an API compatible
* with {@code StringBuffer}, but with no guarantee of synchronization.
* This class is designed for use as a drop-in replacement for
* {@code StringBuffer} in places where the string buffer was being
* used by a single thread (as is generally the case). Where possible,
* it is recommended that this class be used in preference to
* {@code StringBuffer} as it will be faster under most implementations.
StringBuffer
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, Comparable<StringBuffer>, CharSequence
스레드 세이프하고, 뮤터블한 문자열이다.
* A thread-safe, mutable sequence of characters.
* A string buffer is like a {@link String}, but can be modified. At any
* point in time it contains some particular sequence of characters, but
* the length and content of the sequence can be changed through certain
* method calls.
스레드 세이프를 보장하기 위해 synchronized를 통해 메서드를 선언함.
@Override
public synchronized int length() {
return count;
}