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