String vs StringBuilder

String vs StringBuilder

String vs StringBuilder

흔히들 문자열간에 연결을 하고자 문자열 연결 연산자인 +를 많이들 사용하고는 한다. 하지만 이와 같은 연산은 큰 성능 저하를 야기한다.

왜냐하면 String은 불변의 속성을 갖기 때문이다.

즉, 기존의 문자에서 새로운 문자를 추가하게 될 경우 기존의 메모리에서 추가를 하는 것이 아닌 새로운 메모리 영역을 할당받아 가르키게 된다.

만약 문자열 n개를 잇는 시간은 n^2에 비례한다. 문자열 연산이 자주 발생하는 경우에는 String 대신 StringBuilder를 사용하자.

StringBuilder

단일 스레드 환경인 경우

StringBuilder ex = new StringBuilder(); ex.append("hi"); System.out.println(ex.toString());

StringBuffer

멀티 스레드 환경인 경우

동기화를 지원하여 멀티스레드에서 Thread-Safe 하다.

참조:

이펙티브 자바 3rd Item 63

https://www.youtube.com/watch?v=0uHQDnYYXKw

from http://i0521i.tistory.com/12 by ccl(A) rewrite - 2021-12-28 09:28:18