DEV Community

Composite
Composite

Posted on • Edited on

StringBuffer 밖에 모르는 사람들

자바에서 문자열을 많이 다루는데,
자바 기초부터 고급까지 반복적이거나 대량의 텍스트를 순차적이던 뭐던 복합적으로 다룰 때는 주저없이 StringBuffer를 쓴다.

자바 기초 강좌에서는 문자열을 다루는 세 가지 클래스를 제공한다.
String, StringBuilder, StringBuffer 이 세 가지다.
그리고 StringBuilder, StringBuffer 차이는 뭐냐, 스레드 안전한 지 여부, 즉, 동기화 지원 여부 말고는 없다.
그리고 이걸 배운 뒤 우리는 StringBuilder는 잊혀진 채 StringBuffer를 쓰고 있다.

게다가 한 술 더떠, StringBuilder보다 StringBuffer 가 성능상 이득이라고 한다.
물론 다행히도 몇몇 기술 블로그에서 정확하게 얘기해 주고 있기는 하지만...

하지만 계속 우리는 StringBuffer를 쓰고 있다.
심지어 단일 스레드에 동기화가 불필요한 단순 시나리오임이 대부분인데도 불구하고.
(물론 사양 좋아서 큰 차이는 없지만... 좀 알아 달라고.)

하지만 우리도 모르게 StringBuilder를 쓰고 있는 건 알랑가몰라.
왜냐면 String+ 연산은 자바 내부적으로 StringBuilder 를 쓰는 거거든.

String a = "this" + "is" + "a" + "apple";
// it compiled as
String b = new StringBuilder("this").append("is").append("a").append("apple").toString();
Enter fullscreen mode Exit fullscreen mode

하긴... 이걸 느끼려면 백만건 부를 정도로 강도높은 싱글 스레드 반복문을 써야 하니.

Top comments (0)