package CHAPTER08;

public class StringBuilderVsBuffer { // StringBuilder와 StringBuffer 비교 예제
    public static void main(String[] args) {
        // StringBuilder 사용 예제 (비동기 환경에서 빠름, 단일 스레드에 적합)
        System.out.println("🔹 StringBuilder 사용 예제 🔹");
        StringBuilder builder = new StringBuilder("Hello");

        builder.append(" Java"); // 문자열 끝에 추가
        System.out.println("append: " + builder); // Hello Java

        builder.insert(6, "World "); // 6번째 위치에 문자열 삽입
        System.out.println("insert: " + builder); // Hello World Java

        builder.delete(5, 11); // 5~10번째 문자 삭제
        System.out.println("delete: " + builder); // HelloJava

        builder.reverse(); // 문자열 뒤집기
        System.out.println("reverse: " + builder); // avaJolleH

        builder.reverse(); // 다시 원래대로 되돌림
        builder.replace(0, 5, "Hi"); // 앞의 "Hello"를 "Hi"로 대체
        System.out.println("replace: " + builder); // HiJava

        System.out.println(); // 줄 바꿈

        // StringBuffer 사용 예제 (멀티스레드 환경에서 안정적, 동기화 지원)
        System.out.println("🔹 StringBuffer 사용 예제 🔹");
        StringBuffer buffer = new StringBuffer("안녕하세요");

        buffer.append(" 자바"); // 문자열 끝에 추가
        System.out.println("append: " + buffer); // 안녕하세요 자바

        buffer.insert(6, "세계 "); // 6번째 위치에 문자열 삽입
        System.out.println("insert: " + buffer); // 안녕하세요 세계 자바

        buffer.delete(0, 3); // 0~2번째 문자 삭제
        System.out.println("delete: " + buffer); // 세요 세계 자바

        buffer.reverse(); // 문자열 뒤집기
        System.out.println("reverse: " + buffer); // 바자 계세 요세

        buffer.reverse(); // 다시 원래대로 되돌림
        buffer.replace(0, 2, "하이"); // 앞의 "세요" 중 "세"를 "하이"로 대체
        System.out.println("replace: " + buffer); // 하이요 세계 자바
    }
}
