Skip to content
loading...

StringBuffer 밖에 모르는 사람들

composite profile image Ukjin Yang github logo Updated on ・1 min read  

자바에서 문자열을 많이 다루는데,
자바 기초부터 고급까지 반복적이거나 대량의 텍스트를 순차적이던 뭐던 복합적으로 다룰 때는 주저없이 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();

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

twitter logo DISCUSS
Discussion
markdown guide
Classic DEV Post from Jul 30 '19

PublishTo.Dev: Scheduling article publishing on dev.to

Ukjin Yang profile image
I'm a freelance full stack developer, from hell.