귀찮지만 만들어보자

String / StringBuilder / StringBuffer 의 차이점 본문

카테고리 없음

String / StringBuilder / StringBuffer 의 차이점

타우렌주술사 2016. 2. 3. 17:08

예전에 인턴 활동을 했던 당시에 선임 개발자분께서 String의 사용은 지양해야 한다는 말씀을 해주셨었다

결론부터 말하자면 효율성은 StringBuilder > StringBuffer > String 순이다

짧은 문장을 쓸때는 String을 사용하더라도 큰 차이가 없지만

String은 에를 들어

String s = "hello";

s += "world";

이런식으로 문자열을 덧붙이는 경우에 기존에 생성한 객체를 삭제하고 새로운 객체를 만드는 형태이기 때문에

리소스를 많이 잡아먹는다

그에 반해 StringBuilder나 StringBuffer는 기존의 생성된 객체에 새로운 문자열을 붙여나가는 형태여서 상대적으로 훨씬 더 효율적이다

StringBuilder와 StringBuffer의 차이는 Thread Safe에 있는데

StringBuilder의 경우는 단일 쓰레드에서만 안전이 보장된다

그에 반해 StringBuffer는 다중 쓰레드를 사용했을 때에도 안전이 보장된다

StringBuffer에서는 StringBuilder에서 추가적으로 syncronized 처리를 해주기 때문에 비교적 효율성이 떨어지는 편이다

여기까지가 String / StringBuilder / StringBuffer의 차이점이다


그런데 jdk1.5부터는 컴파일할떄 String을 StringBuilder로 변환해준다고 한다...