Programming/Java

[JAVA] StringBuilder란? (개념 / 사용 이유 / 클래스 라이브러리 만들기 / 예제)

JeongKyun 2022. 3. 8.
반응형

서론

해당 글의 내용은 굉장히 심플한 내용이고 기본적인 내용이기에 필자는 이 내용을 글로 정리를 할까 말까 고민을 했지만 이 시간에 정리 다 했겠다란 생각에 글쓰기 버튼을 눌렀다. 그럼 한번 알아보자.

 


 

Stringbuilder 기능

String으로 되어있는 문자열을 합칠 수 있다.

 


 

Stringbuilder 사용이유

우리는 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.의 문법을 사용할 것이 있다면 해당 작성한 클래스 라이브러리에 함수를 추가해나가면서 사용하면 될 것 같다.

댓글

💲 많이 본 글