ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • String, StringBuffer,StringBuilder의 차이점
    Back end/Java 기본 2023. 11. 15. 23:34
    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을 사용하는 것이 좋습니다.

    'Back end > Java 기본' 카테고리의 다른 글

    Optioanl API  (0) 2023.11.15
    static  (0) 2023.11.15
    클래스,객체,생성자란?  (0) 2023.11.15
    전역변수, Static변수, 매개변수  (0) 2023.11.15
    자바 싱글톤 패턴이란?  (0) 2023.11.15
Designed by Tistory.