Java/문자열

[Java]StringBuilder 빈 값으로 초기화하는 방법

DevStory 2022. 8. 19.

StringBuilder 빈 값으로 초기화하는 방법

C#에서는 StringBuilder의 모든 문자를 제거하는 Clear() 메서드를 제공하지만, Java의 StringBuilder 클래스에는 Clear() 메서드가 존재하지 않습니다.

 

이번 포스팅은 Java에서 StringBuilder의 모든 문자를 제거하는 몇 가지 방법을 소개합니다.


방법 1. 새로운 인스턴스 할당

가장 간단한 방법으로 새로운 인스턴스를 할당합니다.

 

이 방법은 인스턴스를 할당할 때, Heap 영역에 새로운 공간을 할당하므로 메모리를 비효율적으로 사용하게 됩니다. 그리고 GC(Garbage Collection)가 처리해야 하는 작업이 많아지므로 새로운 인스턴스를 할당하는 방법은 권장하지 않습니다.

public static void main(String args[]) {
  StringBuilder sb = new StringBuilder("Hello");

  System.out.println("새로운 인스턴스로 할당 전");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());

  sb = new StringBuilder();

  System.out.println("\n새로운 인스턴스로 할당 후");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());
}

[실행 결과]

새로운 인스턴스로 할당 전
sb: Hello
sb.length(): 5

새로운 인스턴스로 할당 후
sb: 
sb.length(): 0

방법 2. Stringbuilder 클래스의 delete 메서드

StringBuilder 클래스에서 제공하는 delete() 메서드를 사용하여 빈 값을 할당할 수 있습니다.

 

첫 번째 매개변수에 0을 전달하고 두 번째 매개변수에 StringBuilder 객체의 길이를 전달합니다.

 

delete() 메서드는 내부적으로 System 클래스의 arraycopy() 메서드를 호출합니다.

public static void main(String args[]) {
  StringBuilder sb = new StringBuilder("Hello");
  
  System.out.println("delete() 메서드 호출 전");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());

  sb.delete(0, sb.length());

  System.out.println("\ndelete() 메서드 호출 후");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());
}

[실행 결과]

delete() 메서드 호출 전
sb: Hello
sb.length(): 5

delete() 메서드 호출 후
sb: 
sb.length(): 0

방법 3. Stringbuilder 클래스의 replace 메서드

StringBuilder 클래스에서 제공하는 replace() 메서드를 사용하여 빈 값을 할당할 수 있습니다.

 

첫 번째 매개변수에 0을 전달하고 두 번째 매개변수에 StringBuilder 객체의 길이를 전달합니다. 마지막으로 세 번째 매개변수에 빈 값("")을 전달합니다.

 

replace() 메서드는 내부적으로 동작하는 과정이 delete() 메서드와 비슷하지만, 처리하는 작업이 delete() 메서드보다  더 많으므로 속도가 느릴 수 있습니다.

public static void main(String args[]) {
  StringBuilder sb = new StringBuilder("Hello");

  System.out.println("delete() 메서드 호출 전");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());

  sb.replace(0, sb.length(), "");

  System.out.println("\ndelete() 메서드 호출 후");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());
}

[실행 결과]

delete() 메서드 호출 전
sb: Hello
sb.length(): 5

delete() 메서드 호출 후
sb: 
sb.length(): 0

방법 4. Stringbuilder 클래스의 setLength 메서드

StringBuilder 클래스에서 제공하는 setLength() 메서드에 0을 전달하여 빈 값을 할당할 수 있습니다.

 

setLength() 메서드는 내부적으로 Arrays 클래스의 fill() 메서드를 호출합니다.

public static void main(String args[]) {
  StringBuilder sb = new StringBuilder("Hello");

  System.out.println("delete() 메서드 호출 전");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());

  sb.setLength(0);

  System.out.println("\ndelete() 메서드 호출 후");
  System.out.println("sb: " + sb);
  System.out.println("sb.length(): " + sb.length());
}

[실행 결과]

delete() 메서드 호출 전
sb: Hello
sb.length(): 5

delete() 메서드 호출 후
sb: 
sb.length(): 0
반응형

댓글