자바에서 문자열을 많이 다루는데,
자바 기초부터 고급까지 반복적이거나 대량의 텍스트를 순차적이던 뭐던 복합적으로 다룰 때는 주저없이 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();
하긴... 이걸 느끼려면 백만건 부를 정도로 강도높은 싱글 스레드 반복문을 써야 하니.
Top comments (0)