[Java] String/StringBuffer/StringBuilder
Updated:
String
- 최초 메모리에 할당된 값이 변하지 않음.
-
문자열의 수정, 삭제, 연산 작용이 수행되면 새로운 값을 힙 메모리에 할당함.
→ 새로운 값을 메모리에 할당하면서 변환 전 문자열은 그대로 메모리에 Garbage로 남아있으므로 문자열의 변환이 자주 일어나면 메모리에 차지하는 Garbage가 늘어나고 힙 메모리 부족 이슈가 발생될 수 있음.
→ 변하지 않는 문자열을 빈번하게 입출력할 때 유리.
StringBuffer
-
최초 메모리에 할당된 값을 변동하여 사용 가능.
→ 문자열의 수정, 삭제, 추가가 빈번하게 발생할 경우 유리
→ 동기화를 지원하여 멀티 쓰레드 환경에서 적합
StringBuilder
-
최초 메모리에 할당된 값을 변동하여 사용 가능.
→ 문자열의 수정, 삭제, 추가가 빈번하게 발생할 경우 유리
→ 동기화를 멀티 쓰레드 환경에 부적합. 단일 쓰레드 환경에서는 StringBuffer보다 성능이 뛰어남
charAt() 특정 인덱스 위치의 문자 반환 length() 문자열 길이 substring() 특정 인덱스 범위 내 문자열을 복사해서 새로 생성된 인스턴스 반환 append() 문자열 추가 capacity() 배열 사이즈 (char[] 배열을 여유있게 확보해둠) delete(a, b) 인덱스 사이의 문자열 제거 insert(a, b) 인덱스 사이에 문자열 삽입
참고
- 자바의 정석
- https://velog.io/@ohoh7391/BufferedReader-BufferedWirter-%EC%82%AC%EC%9A%A9%EB%B2%95
Leave a comment