package JinsuStudy.String;
public class MyStringExample {
// String
public static void main(String[] args) {
// String 클래스
// 1.불변(immutable)한 문자열을 나타냅니다. 즉, 한 번 생성된 문자열은 변경할 수 없습니다.
// 2.문자열에 대한 연산(문자열 결합, 추출 등)을 수행하면 새로운 문자열이 생성되기 때문에 메모리 소비가 발생할 수 있습니다.
// 3.불변성으로 인해 스레드 안전성을 가지고 있습니다.
String str = "Hello";
str = str + " World1"; // 새로운 문자열이 생성됨
System.out.println(str);
// StringBuffer 클래스
// 1.가변(mutable)한 문자열을 나타냅니다. 문자열을 동적으로 변경할 수 있습니다.
// 2.문자열에 대한 연산이 필요한 경우 StringBuffer를 사용하면 효율적입니다. 특히, 여러 스레드에서 안전하게 사용할 수 있도록 동기화되어 있습니다.
// 하지만 동기화로 인해 성능이 StringBuilder에 비해 떨어질 수 있습니다.
StringBuffer buffer = new StringBuffer("Hello");
buffer.append(" World2"); // 기존 문자열을 변경함
System.out.println(buffer);
// StringBuilder 클래스
// 1.마찬가지로 가변(mutable)한 문자열을 나타냅니다.
// 2.StringBuffer와 유사하지만, 동기화를 제공하지 않아서 단일 스레드 환경에서 사용할 때 더 빠릅니다.
// 따라서 단일 스레드 환경에서는 StringBuilder를 사용하는 것이 성능상 이점이 있습니다.
StringBuilder builder = new StringBuilder("Hello");
builder.append(" World"); // 기존 문자열을 변경함
}
}
어떤 것을 선택해야 할까요?
단일 스레드 환경에서 작업한다면, 일반적으로 StringBuilder를 사용하는 것이 더 효율적입니다. 멀티스레드 환경이거나 스레드 안전성이 필요하면 StringBuffer를 사용할 수 있습니다. 불변성이 필요하거나 문자열에 대한 변경이 거의 없는 경우 String을 사용하는 것이 좋습니다. |