반응형
java공부를 하다가 StringBuilder라는 클래스를 알게되었다.
나는 기본 String 클래스밖에 몰랐었다.
그러나 String은 클래스가 문자열을 생성자로 넣어 인스턴스를 한번 생성하고 나면 인스턴스가 가진 문자열 값을 변경하지 못하는 단점이 있다.
이를 보완한 클래스가 StringBuilder와 StringBuffer인데
이번엔 StringBuilder클래스에 대해 알아보자.
위 단점을 보완한 내용은 즉, 같은 인스턴스 안의 문자열(char 배열) 필드 값을 추가하거나 변경할 수 있도록 되어있다.
또한 원본 문자열을 바꿀 수 있는 만큼 문자열을 다루는 메소드도 더 많이 포함되어 있다.
StringBuffer와 StringBuilder는 모두 쓰임과 메소드가 같다.
그러나 StringBuffer는 여러곳에서 동시에 같은 문자열 인스턴스에 접근할 때 중복 점유를 막을 수 있는 장치가 되어있다.(동기화 처리)
때문에 StringBuilder에 비해 좀 더 무겁다.
그래서 특별한 이유가 없다면 StringBuilder를 사용하는것이 일반적이다.
String 클래스와 동일한 기본 메소드
- charAt( ) : 특정 인덱스 위치의 문자 반환
- indexOf( ) / lastIndexOf( ) : 문자열을 검색하여 위치 반환
- length( ) : 문자열 길이 반환
- replace( ) : 검색된 문자열 교체
- substring( ) : 특정 인덱스 범위 내 문자열을 복사하여 새로 생성된 인스턴스 반환(문자열 자르기)
- toString( ) : 문자열 출력
추가 메소드
append( )
- 문자열 추가
capacity( )
- String 클래스와 다르게 char[ ] 배열 사이즈를 여유있게 잡아둔다.
- 현재 char[ ] 배열이 가진 사이즈 정보를 반환한다
- length( )는 실제 데이터가 들어있는 문자열 자체의 길이이고 capacity( ) 는 현재 배열의 사이즈
- append( )등 문자열을 조정할 때 배열 사이즈가 자동으로 변경됨
delete( )
- 매개변수로 전달받은 인덱스 사이의 문자열 제거
- parameter - 인덱스 시작점, 인덱스 끝점 + 1
- 문자열에서 시작과 끝은 항상 "시작 <= 범위 < 끝" 형태
deleteCharAt( )
- 특정 인덱스의 한 문자만 삭제
- delete( ) 메소드에서 범위를 한 글자만 잡는 것과 동일한 효과
insert( )
- 특정 위치에 문자열 삽입
- 매개변수로 받은 인덱스 위치부터 문자열을 삽입해줌 // ex) a.insert(위치,"문자열");
reverse( )
- 문자열을 거꾸로 뒤집어 준다.
setCharAt( )
- 특정 위치의 문자 변경
- insert( )가 원본 문자열 중간에 삽입하는 것이라면 setCharAt( )은 해당 위치의 문자를 변경해준다.
setLength( )
- 문자열 길이 조정
- 현재 문자열보다 길게 조정하면 공백으로 채워짐
- 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제됨
timeToSize( )
- 문자열이 저장된 char[ ] 배열 사이즈를 현재 문자열 길이와 동일하게 조정
- String 클래스의 trim( )이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것
- 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해준다고 보면 된다.
예시를 보는 것 보다 각자 적용해보면서 이해를 높혀보자!!
출처😁😁
반응형