Java에서 StringBuilder와 StringBuffer의 차이점

Muhammad Zeeshan 2023년10월12일
  1. Java의 StringBuffer
  2. Java의 StringBuilder
  3. Java에서 StringBuilderStringBuffer의 차이점
Java에서 StringBuilder와 StringBuffer의 차이점

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

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에서 StringBuilderStringBuffer의 차이점

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

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

StringBuilderStringBuffer 사용 예

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

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가 더 효율적인 옵션이라는 것을 매우 분명하게 보여줍니다.

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

관련 문장 - Java String