String Class
String 클래스는 변경이 불가하다 (Immutable Class)
concat(), trim(), substring() 등 메소드들은 새롭게 생성된 String 객체를 반환한다.
기존 String 객체가 가지고 있는 데이터는 변경되지 않고 사용 가능한 상태로 남는다.
String.substring() 이런 변경이 일어나면,
기존 String 객체와 String.substring() 객체 두개가 존재하게 되는 것이다.
StringBuffer Class
StringBuffer 클래스는 변경이 가능하다 (Mutable Class)
append(), insert(), delete() 등의 메소드를 통해 StringBuffer객체가 가지고 있는 문자열을 변경할 수 있다.
이때에는 String 클래스와 같이 새로운 객체를 생성하지 않고 기존의 문자열을 변경한다.
동기화 보장해야 하는 경우 String 클래스 보다 성능이 좋지 않다.
단순 참조가 많은 경우 StringBuffer 클래스 보다 String 클래스가 유리 하다.
또 한가지, StringBuffer 클래스는 동기화되어, 멀티스레드에 안전하다.
String VS StringBuffer 성능 차이
문자열을 추가하기 위해 concat() 같은 메소드를 사용할 때
StringBuffer 클래스는 String 클래스와 비교해보면 더 좋은 성능을 보인다.
하지만 StringBuffer 객체의 생성 및 toString() 메소드를 통한
String 객체의 생성이 동반되어야 하므로 더 많은 시간 및 메모리 누수가 발생하게 된다.
StringBuffer는
하나의 문자열에 대하여, 다른 문자나 문자열 추가가 여러 번 이루어 지는 경우 유리하다.
결론
무작정 StringBuffer가 성능이 빠르다고 생각하는 것이 오히려 성능저하를 불러 올 수가 있다.
'Back > Java' 카테고리의 다른 글
[Java] Preparestatement AddBatch를 사용하여 대용량 데이터 INSERT 처리 (0) | 2020.08.03 |
---|---|
Java Static은 언제, 어떻게 사용해야 할까 (0) | 2020.07.29 |
[Java] Ajax 파일업로드(엑셀) 및 Poi 라이브러리 사용하기 (0) | 2019.11.26 |
댓글