Jin's Dev Story

[JAVA] StringBuffer & StringBuilder 특징 본문

Programming Language/JAVA

[JAVA] StringBuffer & StringBuilder 특징

woojin._. 2023. 10. 20. 15:01

공통점

  • new 연산으로 클래스를 한 번만 만듦

  • 문자열 연산 시 새로 객체를 만들지 않고 크기를 변경함

  • 메서드가 동일

  • 가변성을 가짐

    • 코드

      String str = "strA";
      StringBuilder sbd = new StringBuilder();
      StringBuffer sbf = new StringBuffer();
      
      sbd.append("sbdA");
      sbf.append("sbfA");
      
      System.out.println("String 객체의 주소 : "+str.hashCode());
      System.out.println("StringBuilder 객체의 주소 : "+sbd.hashCode());
      System.out.println("StringBuffer 객체의 주소 : "+sbf.hashCode());
      
      str += "strB";
      sbd.append("sbdB");
      sbf.append("sbfB");
      System.out.println("=============================");
      
      System.out.println("String 객체의 주소 : "+str.hashCode());
      System.out.println("StringBuilder 객체의 주소 : "+sbd.hashCode());
      System.out.println("StringBuffer 객체의 주소 : "+sbf.hashCode());
      
      //String 객체의 주소 : 3541040
      //StringBuilder 객체의 주소 : 1468177767
      //StringBuffer 객체의 주소 : 434091818
      //=============================
      //String 객체의 주소 : 1758230625
      //StringBuilder 객체의 주소 : 1468177767
      //StringBuffer 객체의 주소 : 434091818

차이점

  • StringBuffer는 Thread-Safe함
  • StringBuilder는 Thread-safe하지 않음 (불가능)

StringBuffer 클래스

  • 문자열 연산이 많은 Multi-Thread 환경
  • 멀티 스레드 환경에서의 동기화를 지원하지만 이런 구현은 로직을 의심해야 함
  • 속도 느림

StringBuilder 클래스

  • 문자열 연산이 많은 Single-Thread 또는 Thread 신경 안쓰는 환경
  • 동기화를 지원하지 않아 싱글 스레드에서 속도가 빠릅니다.

'Programming Language > JAVA' 카테고리의 다른 글

[JAVA] 직렬화 & 역직렬화  (0) 2024.06.12
[JAVA] 정적 & 동적  (1) 2023.10.20
[JAVA] 디자인패턴  (1) 2023.10.20
[JAVA] 절차 지향 프로그래밍  (0) 2023.10.20
[JAVA] 최대공약수, 최소공배수  (0) 2023.10.20