아이딕
아이딕 IT블로그
아이딕
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Algorithm (9)
      • BackJoon (0)
      • Programmers (5)
      • Data Structure (4)
    • Java (5)
    • Spring (1)
    • SQL (2)
      • MSSQL (1)
    • JavaScript (7)
    • React (3)
    • HTML (0)
    • CSS (1)
    • Build Tool (0)
      • Gradle (0)
      • Maven (0)
    • Tomcat (1)
    • Git (2)
    • IDE (3)
    • Error Log (1)
    • 개발 지식 (9)
    • 도서 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩테스트
  • Java 문자열 처리 최적화
  • 리액트
  • java Data Structure
  • 프로그래머스
  • IntelliJ
  • 알고리즘
  • react
  • VSCode
  • 자바자료구조
  • Algorithm
  • 자바스크립트
  • 호이스팅
  • 깃허브
  • JVM
  • 자바
  • codingTest
  • 함수레벨스코프
  • 블록레벨스코프
  • 변수호이스팅
  • Java
  • 인텔리제이
  • JavaScript
  • programmers
  • GitHub
  • 스코프
  • springboot
  • 자료구조
  • Git
  • ES6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아이딕

아이딕 IT블로그

Java

[Java] 문자열 연결에 대한 StringBuilder와 StringBuffer 비교

2024. 1. 31. 13:41
728x90
반응형

Java에서 문자열을 연결하는 데 사용되는 StringBuilder와 StringBuffer의 장점과 단점에 대해 알아보고, 이를 통해 어떤 경우에 어떤 클래스를 선택해야 하는지 알아보자.

 

1. StringBuilder의 장점과 단점

장점:

가변성: StringBuilder는 내부 버퍼에 문자열을 추가하므로, 새로운 객체를 생성하지 않고도 문자열을 효율적으로 연결할 수 있다.
빠른 성능: StringBuilder는 단일 스레드 환경에서 사용할 때 가장 빠른 성능을 제공한다.
동기화 비용 없음: StringBuilder는 동기화를 고려하지 않으므로, 동기화 관련 비용이 없다.

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString();

단점:

스레드 안전하지 않음: StringBuilder는 스레드 안전하지 않으므로, 멀티스레드 환경에서 사용할 경우 동기화를 직접 처리해줘야 한다.

 

2. StringBuffer의 장점과 단점

장점:

가변성: StringBuffer도 StringBuilder와 마찬가지로 내부 버퍼를 사용하여 문자열을 효율적으로 연결할 수 있다.
스레드 안전: StringBuffer는 멀티스레드 환경에서 안전하게 사용할 수 있도록 동기화 처리되어 있다.

StringBuffer sb = new StringBuffer();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString();

단점:

동기화 비용: StringBuffer는 동기화 처리를 하기 때문에 StringBuilder보다 약간의 성능 저하가 있을 수 있다.
불변성: StringBuffer는 내부 버퍼를 변경하는 메소드를 호출해야만 문자열을 연결할 수 있으므로, 메소드 체이닝을 사용할 수 없다.

 

3. 정리

단일 스레드 환경에서는 StringBuilder를, 멀티스레드 환경에서는 StringBuffer를 사용하는 것이 일반적이며, 성능과 동기화 여부를 고려하여 적절한 클래스를 선택하여 사용하면 된다.

728x90
반응형

'Java' 카테고리의 다른 글

[Java] 문자열 연결 방식 비교: String vs StringBuilder vs StringBuffer  (4) 2024.02.05
[Java] 예외 처리 printStackTrace()의 취약점과 대안  (2) 2024.02.01
[JAVA] JVM(JAVA Virtual Machine) 이란?  (19) 2023.01.29
[JAVA] 자바(JAVA)란?  (12) 2023.01.22
    'Java' 카테고리의 다른 글
    • [Java] 문자열 연결 방식 비교: String vs StringBuilder vs StringBuffer
    • [Java] 예외 처리 printStackTrace()의 취약점과 대안
    • [JAVA] JVM(JAVA Virtual Machine) 이란?
    • [JAVA] 자바(JAVA)란?
    아이딕
    아이딕
    IT, 개발, 공부, 정리, 기타

    티스토리툴바