Java - StringBuilder 초기화, 모든 문자열 삭제

StringBuilder 객체를 처음 생성한다면 그냥 new StringBuilder()로 객체를 만들면 되겠지만, 만약 사용하던 StringBuilder를 재사용하는 경우라면, 이전에 추가한 문자열을 StringBuilder에서 삭제하고 재사용해야 합니다.

StringBuilder에서 clear라는 이름으로 문자열을 삭제하는 메소드를 제공해야 할 것 같은데, 이런 메소드는 제공되고 있지 않습니다. 대신 delete()setLength() 메소드를 제공하며 이것으로 문자열을 비울 수 있습니다.

1. StringBuilder.setLength()로 StringBuilder의 문자열 비우기

setLength(0)는 StringBuilder에 저장된 문자열의 길이를 0으로 변경합니다. 즉 문자열을 empty로 만든다는 것은 이전에 저장한 문자열을 모두 제거한다는 것입니다. 이렇게 StringBuilder를 초기화하여 재사용할 수 있습니다.

public class Example {

    public static void main(String[] args) {

        StringBuilder builder = new StringBuilder();
        builder.append("Hello World");
        builder.append(", Java");
        System.out.println("sb: " + builder.toString());

        builder.setLength(0);
        System.out.println("sb: " + builder.toString());

        builder.append("Hello World, Java");
        System.out.println("sb: " + builder.toString());
    }
}

Output:

sb: Hello World, Java
sb:
sb: Hello World, Java

2. StringBuilder.delete()로 StringBuilder의 문자열 비우기

delete(start, end)는 StringBuilder에 저장된 문자열의 start Index에서 end Index 직전까지 삭제합니다. 즉, 삭제 대상에서 start는 포함하며, end는 포함하지 않습니다.

StringBuilder.length()는 StringBuilder로부터 생성되는 문자열의 길이를 리턴합니다. 따라서 delete(0, builder.length())는 StringBuilder의 모든 문자열을 제거하라는 의미가 됩니다.

public class Example1 {

    public static void main(String[] args) {

        StringBuilder builder = new StringBuilder();
        builder.append("Hello World");
        builder.append(", Java");

        String str = builder.toString();
        System.out.println("sb: " + str);
        System.out.println("str.length(): " + str.length() + ", builder.length: " + builder.length());

        builder.delete( 0, builder.length());
        System.out.println("sb: " + builder.toString());

        builder.append("Hello World, Java");
        System.out.println("sb: " + builder.toString());
    }
}

Output:

sb: Hello World, Java
str.length(): 17, builder.length: 17
sb:
sb: Hello World, Java

3. StringBuilder 재생성하여 StringBuilder 초기화

StringBuilder 객체를 다시 생성하는 방법이 있습니다. 위의 방식보다는 성능적인 측면에서 비용이 좀 더 들 수 있습니다. 자주 사용되는 코드가 아니라면 이런 코드도 문제는 없습니다만, 자주 사용되는 코드라면 성능적인 부분을 다시 한번 체크해보시는 것이 좋습니다.

public class Example2 {

    public static void main(String[] args) {

        StringBuilder builder = new StringBuilder();
        builder.append("Hello World");
        builder.append(", Java");
        System.out.println("sb: " + builder.toString());

        builder = new StringBuilder();
        System.out.println("sb: " + builder.toString());

        builder.append("Hello World, Java");
        System.out.println("sb: " + builder.toString());
    }
}

Output:

sb: Hello World, Java
sb:
sb: Hello World, Java
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha