[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 |
댓글