Day21 - StringBuffer

2021. 3. 16. 15:19JAVA 공부

StringBuffer

이번에는 StringBuffer 에 대해 알아 봅니다

StringBuffer 는 String의 단점을 보완한 데이터타입(클래스) 입니다.

 

String은 처음 초기화 된 데이터의 변화가 생기면 (변경) 이미 있는 객체에 값을 변경시키는 게 아닌, 새로운 객체를 만듭니다. 그렇기 때문에, 만약 10000번의 문자열 변경이 이루어 진다면, 10000개의 객체를 가지고 있는 셈이 되는거죠

이러한 단점을 보완하기 위해서 나온게 StringBuffer , StringBuilder 입니다.

 

StringBuffer 와 StringBuilder 의 기능은 같지만, StringBuffer 가 더 안정성이 높기 때문에 StringBuffer를 사용한다고 해요

 

그리고 StringBuffer 는 String에 있는 기능들을 거의 사용할 수 있습니다.

그러면 이제, StringBuffer 의 기능들을 알아 보도록 하죠

- append(String str) -> 문자열 추가

- insert(int offset, String str) -> 문자열 충간에 추가

- delete(int start, int end) -> 문자열 삭제

- replace(int start, int end, String str) -> 문자열 변경

- reverse() -> 문자열을 거꾸로 변경

- String 형태로 변경하기

 

이렇게 stringBuffer 의 메서드 들에 대해 조금 알아 보았는데요.

 

이번에 알아 본 메서드로 어제 만든 퀴즈 회문 을 고쳐 봅시다

먼저 공백을 지워주는 건 똑같은데

StringBuffer 의 reverse 를 이용해서 거꾸로 뒤집어 주고....

String 형으로 다시 바꿔 줍니다. ( 비교할 대상이 String 이기 때문에, 데이터 타입을 일치 시켜 주기 위해서 )

그 후 equals를 통해 문자열을 비교해 줍니다.

 

String 과 StringBuffer 의 속도 비교

이렇게, 반복문을 돌려서 확인을 해보게 되면, 객체를 생성하는 String 은 속도가 좀 더 걸리고

객체를 생성하지 않는 StringBuffer는 비교적 더 빠르게 돌아갑니다.

 

값의 변환을 10개, 100개 하는 정도로는 속도 차이가 그렇게 크지 않으니, String을 써도 상관은 없으나

값의 변환이 자주 일어날 것 같은 경우에는 StringBuffer 를 써 주는게 좋겠습니다.

'JAVA 공부' 카테고리의 다른 글

Day22 - Date, Calendar, Random, StringTokenizer  (0) 2021.03.17
Day21 - Math , Wrapper, Arrays  (0) 2021.03.16
Day21 - 외부라이브러리 추가  (0) 2021.03.16
Day20 - String  (0) 2021.03.15
Day19 - API - java.lang 패키지  (1) 2021.03.12