String으로 되어있는 문자열을 합칠 수 있는 것을 뜻한다.
우리는 String과 "+"를 이용하여 String을 합칠 수 있다.
그런데 StringBuilder를 사용하는 이유가 무엇일까? 그 이유는 아래와 같다.
우선 기존 방식인 String과 "+"을 사용한 방식을 살펴보자.
String str = "안" + "녕";
//str 결과 : "안녕"
StringBuilder sb = new StringBuilder();
sb.Append("안");
sb.Append("녕");
// sb.tostring() 결과 : "안녕"
우리는 위의 사용 예제를 구분 짓기 전에 String 객체는 변경이 불가능하다는 지식을 알고 접근을 해야한다.
Java에서 String은 한번 생성 되면 내용을 바꿀 수 없다.
그러하여 근데 위의 방식처럼 +을 사용하면 다른 문자열과 합쳐짐에 따라서
이전 문자열은 쓰레기 값이 되는 것이다. (GC가 이 후 처리)
그러하여 문자가 많아지면 많아질수록 메모리 낭비가 심한 String보다는 Java에서 지원해주는 Stringbuilder라는 문법을 사용하여 String형 내용들을 합치는 것이다.
이 Stringbuilder는 String과 달리 변경이 가능하며 글자를 붙일 때 새로운 객체를 생성하는 것이 아닌 바로 뒤에 Append 시켜주는 것이여서 메모리 관리에 String보다 효율적이다.
추가적으로 Stringbuilder를 사용하면 글자와 글자 사이에 인덱스로 글자를 추가 할 수도 있고
특정 인덱스의 문자를 변경할 수도 있다.
이 외에도 여러 기능을 지원하니 더 상세한 내용은 공식 자료를 살펴보면 좋을 것 같다.
public class StringBuilderAdd {
//멤버변수 private StringBuilder sb; //생성자 public StringBuilderAdd(){ sb = new StringBuilder(); } //append (null -> "" 처리) public void append(String str) { sb.append(str != null ? str : ""); } // System.getProperty("line.separator") 사용하여 줄 띄움 public void appendLine(String str) { //System.getProperty("line.separator") or "\n" 사용하여 줄 띄움 sb.append(str != null ? str : "").append(System.getProperty("line.separator")); } //tostring() 함수화 처리 public String toString() { return sb.toString(); }
}
위와 같이 아예 클래스 라이브러리화를 시켜서 간편하게 사용하는 것이
사용 / 관리 하는데 용이할 것이라 생각하여 만들어보았다.
한 두번 사용하는것이라면 그냥 위의 내용에서 필요한 부분만 빼내어 사용하면 될 것이다.
해당 클래스에 정리되어있는 문법 외에 Stringbuilder 의 문법을 사용할 것이 있다면
해당 작성한 클래스 라이브러리에 함수를 추가해나가면서 사용하면 될 것 같다.