[JAVA] StringBuilder란?

KosMos·2022년 9월 22일
0
post-thumbnail

기능

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를 사용하면 글자와 글자 사이에 인덱스로 글자를 추가 할 수도 있고
특정 인덱스의 문자를 변경할 수도 있다.
이 외에도 여러 기능을 지원하니 더 상세한 내용은 공식 자료를 살펴보면 좋을 것 같다.

예제

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를 많이 사용해야하는 상황일 경우

위와 같이 아예 클래스 라이브러리화를 시켜서 간편하게 사용하는 것이
사용 / 관리 하는데 용이할 것이라 생각하여 만들어보았다.
한 두번 사용하는것이라면 그냥 위의 내용에서 필요한 부분만 빼내어 사용하면 될 것이다.

해당 클래스에 정리되어있는 문법 외에 Stringbuilder 의 문법을 사용할 것이 있다면
해당 작성한 클래스 라이브러리에 함수를 추가해나가면서 사용하면 될 것 같다.

0개의 댓글