본문 바로가기
java

[Java] java.lang 패키지 : StringBuilder, StringBuffer

by jinbro 2017. 1. 20.

[StringBuilder와 StringBuffer]

문자열에 대한 변경처리를 하기위한 클래스다.

버퍼(문자열을 수정하기 위한 임시저장공간)에 기존 문자열을 저장해두고 수정하는 방식이다.

버퍼의 크기는 최초 16이며, 생성자의 지정에 따라 크기를 지정할 수 있다. (버퍼 사이즈는 1글자 당 버퍼 크기 1)

위의 클래스들로 작업할 때 최초 버퍼 크기가 맞지 않아 늘리는 작업이 필요한데, 이 작업은 자동으로 된다.

버퍼의 크기는 실제 더 필요한 사이즈보다 2배정도 더 생성하는데, 불필요하게 크게 메모리에 할당되어 낭비될 수 있으므로 버퍼크기는 잘 예상하는 것이 좋다.

두 클래스의 생성자, 메소드 형태, 기능이 거의 동일하다.


[두 클래스의 차이점]

멀티쓰레드 환경이냐 싱글쓰레드 환경이냐이다.

다시말해 동시에 처리를 하는 쓰레드 환경이냐 아니냐에 따라 두 클래스 중 어떤 하나를 선택하는 것이다.

StringBuffer는 synchronized 명령어(앞으로 thread에 대해 포스팅도 할 것이다)로 메소드가 구성되어있기 때문에 멀티쓰레드 환경에서도 데이터 손상 혹은 교착 상태에 빠지지 않는다.

StringBuilder는 그런 장치가 없는 대신 성능이 더 좋음


[메소드]

=> append : 문자열 뒤에 문자열을 붙이는 메소드

=> insert : 문자열의 특정위치에 문자열을 삽입하는 메소드 

=> delete : 문자열의 start ~ end-1 index까지의 문자열 삭제하는 메소드

=> deleteCharAt : 문자열에서 특정 index의 문자를 삭제하는 메소드

=> setCharAt : 문자열의 특정 index 문자값을 바꾸는 메소드

=> reverse : 문자열을 거꾸로 만드는 메소드

=> toString : StringBuilder를 통해 수정된 문자열을 출력하는 메소드, 수정하고자 builder에 넣은 문자열의 값이 변경된 것이 아님

=> capacity : 빌더의 버퍼 사이즈를 반환하는 메소드

=> ensureCapacity : 버퍼 사이즈를 임의적으로 늘리는 메소드(할당한 버퍼 사이즈까지)

=> trimToSize : 버퍼의 크기를 적당한 크기로 줄이는 메소드

다시 말하지만 두 클래스의 사용방법은 같다.(객체 생성(str) - 버퍼 크기 설정됨 - 수정 - 출력)

=> 멀티쓰레딩 환경 : StringBuffer / 싱글쓰레딩 환경 : StringBuilder



'java' 카테고리의 다른 글

[Java] java.lang 패키지 : Calendar, DateFormat, TimeZone  (0) 2017.01.21
[Java] java.lang 패키지 : StringTokenizer  (0) 2017.01.20
[Java] java.lang 패키지 : String  (0) 2017.01.20
[Java] 접근제어자  (0) 2017.01.20
[Java] 패키지  (0) 2017.01.20

댓글