Categories

Tags

String

JAVA String은 Immutable한 객체. 한번 생성되어 할당되면 메모리 공간이 변하지 않음. 문자열 변경 연산을 수행하는 경우, 새로운 문자열을 만들어서 할당함. 따라서 문자열 연산이 많은 경우 성능에는 좋지 않음. 간단하게 사용할 수 있고, 동기화를 신경쓰지 않아도 되는 것이 장점.

StringBuffer & StringBuilder

문자열 연산이 발생하면 버퍼 크기를 가변적으로 변경하여 유연하게 동작함.
StringBuffer는 메서드별로 Synchronized 키워드가 존재하여, 멀티스레드 환경에서도 동기화를 지원한다.

String은 간단한 문자열 사용시,
StringBuffer는 thread-safe 로직이 필요한 경우,
StringBuilder는 thread-safe를 고려하지 않아도 될 때 사용.

JDK 1.5 이후에는 String 객체를 StringBuilder로 컴파일되게 변경했으나, 반복 루프를 사용해서 문자열 처리를 하는 경우는 여전히 성능 이슈가 발생함.