본문 바로가기

Language/JAVA

[Java] StringBuilder 정리

String str1 = "ab";
str1 += "c";

 

위 예제코드에서 str1에는 무슨 문자열이 들어 가있을까? 

간단하다. str1과 "c"가 합쳐진 "abc"가 들어가 있을거다.

위처럼 간단한 방법을 이용하여서 문자열끼리 더하거나 빼서 새로운 문자열을 생성할 수 있다.

 

허나, 위 방법은 단점을 지니고 있다. 

String은 위같은 방법으로 연산을 진행하면 새로운 String 객체가 리턴될것이다. 다시금 말해, 메모리의 재할당이 이루어질 것이다. 이러한 문제는 위 예제처럼 크기가 작은 프로그램에서는 문제가 되지 않는다. 허나, 프로그램이 커질 수록 메모리의 낭비가 심해질 것이다.

 

위 문제를 해결하기 위해 JAVA에는 StringBuilder 클래스가 있다.

StringBuilder 클래스는 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용한다. 따라서, 속도도 빠르며 성능적으로 더 낫다.

 


생성자

StringBuilder sb = new StringBuilder();

StringBuilder sb = new StringBuilder("abc");

 

위처럼 객체선언만 할 수도 있고, 문자열을 바로 포함한 객체를 선언할 수도 있다.

 


주요 메소드

sb.append() : 문자열을 맨 끝에 더한다. 

 

sb.insert(int offset, String str) : offset 위치에 str을 추가한다.

 

sb.replace(): 첫번째와 두번째 파라미터로 받는 index에 위치한 문자열을  대체한다.

 

sb.substring(int start,(int end)): 인덱싱, 파라미터가 하나라면 해당 index부터 끝까지, 두개라면 start부터 end-1까지 문자열을 잘라낸다. 

 

sb.deleteCharAt(int index): index에 위치한 문자 하나를 삭제한다.

 

sb.toString(): String으로 변환한다.

 

sb.reverse(): 해당 문자 전체의 순서를 뒤집는다.

 

sb.setCharAt(int index, String s): index 위치의 문자를 s로 변경한다.

 

sb.setLength(int len): 문자열 길이 조정, 현재 문자열보다 길게 조정하면 공백으로 채워지고 짧게 조정하면 나머지 문자는 삭제된다.

 

sb.trimToSize(): 문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정해준다. 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해주는 것이다.