HOWTO · Java

Java에서 StringBuilder와 StringBuffer의 차이점

이 자습서에서는 Java에서 사용할 수 있는 StringBuilder 및 StringBuffer 클래스 간의 차이점에 대해 설명합니다.

이 페이지의 내용

이 튜토리얼에서는 Java의 StringBuilder와 StringBuffer 클래스 간의 차이점에 대해 설명합니다. 시작하겠습니다!

Java의 StringBuffer

StringBuffer 클래스는 Java에서 변경 가능한 문자열 데이터를 사용할 수 있는 수단을 제공합니다. 이러한 문자열은 위험 없이 동시에 수많은 스레드에 의해 무관심한 방식으로 사용될 수 있습니다.

통사론:

StringBuffer b = new StringBuffer("Shanii");

예:

public class BufferexamplebyZeeshan {
  public static void main(String[] args) {
    StringBuffer b = new StringBuffer(" Hi! ");
    b.append(" Muhammad Zeeshan Here! ");
    b.append(" Let's Code ");
    System.out.println(b);
  }
}

출력:

Hi! Muhammad Zeeshan Here! Let's Code

Java의 StringBuilder

StringBuilder는 또한 변경 가능한 문자열에 대한 액세스를 제공하지만 이 구현에는 스레드 안전성이 없습니다. 여러 스레드가 동시에 사용할 수 없습니다.

이 클래스는 이러한 추가 기능을 적용하지 않기 때문에 StringBuffer보다 훨씬 빠릅니다.

통사론:

StringBuilder s1 = new StringBuilder("Shani");

예:

public class BuilderexamplebyZeeshan {
  public static void main(String[] args) {
    StringBuilder s = new StringBuilder(" Hey!");
    s.append("I am a Programmer");
    System.out.println(s);
  }
}

출력:

Hey!I am a Programmer

Java에서 StringBuilder와 StringBuffer의 차이점

아래 문장을 통해 StringBuilder와 StringBuffer의 차이점을 살펴보겠습니다.

아니요. StringBuilder StringBuffer
1 StringBuilder 함수는 동기화되지 않습니다. 즉, 스레드로부터 안전하지 않습니다. 이는 두 개의 서로 다른 스레드가 StringBuilder 클래스의 메서드를 동시에 호출할 수 있음을 나타냅니다. StringBuffer 개체가 동기화되어 스레드로부터 안전함을 의미합니다. 이는 StringBuffer의 메서드를 두 개의 서로 다른 스레드에서 동시에 호출할 수 없음을 나타냅니다.
2 컴퓨터의 힙 메모리에서 생성됩니다. 또한 힙 메모리에서 생성됩니다.
삼 변경 가능한 문자열을 제공합니다. 객체를 생성하지 않고 문자열을 변경할 수 있습니다.
4 기본 16자를 저장할 수 있습니다. StringBuilder와 마찬가지로 기본값 16자를 저장할 수 있습니다.
5 많은 스레드가 동시에 작동하는 것을 방지하면서 가변성을 지원하기 때문에 가장 빠릅니다. 여러 스레드가 동시에 작업을 수행할 수 있으므로 StringBuilder 클래스보다 느립니다.
6 연결은 append() 함수를 사용하여 수행됩니다. 연결은 append() 함수를 사용하여 수행됩니다.

StringBuilder 및 StringBuffer 사용 예

StringBuilder는 동기화되지 않았기 때문에 StringBuffer보다 빠릅니다. StringBuilder와 StringBuffer를 비교하는 기본 예제를 살펴보겠습니다.

public class Main {
  public static void main(String[] args) {
    int RandomNumber = 5677839;
    long time;
    StringBuffer s = new StringBuffer();
    time = System.currentTimeMillis();
    for (int i = RandomNumber; i-- > 0;) {
      s.append("");
    }
    System.out.println(System.currentTimeMillis() - time);

    StringBuilder b = new StringBuilder();
    time = System.currentTimeMillis();
    for (int i = RandomNumber; i > 0; i--) {
      b.append("");
    }
    System.out.println(System.currentTimeMillis() - time);
  }
}

출력:

161
17

위의 예는 StringBuffer에 대한 161밀리초와 StringBuilder에 대한 17밀리초의 수치 비교를 제공하며, 이는 StringBuilder가 더 효율적인 옵션이라는 것을 매우 분명하게 보여줍니다.