[JAVA] String, StringBuffer, StringBuilder 차이 및 장단점

2021. 11. 27. 00:15· JAVA/JAVA
목차
  1. String
  2. StringBuffer / StringBuilder
  3. StringBuffer vs StringBuilder

https://ifuwanna.tistory.com/221

 

[Java] String, StringBuffer, StringBuilder 차이 및 장단점

Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다

ifuwanna.tistory.com

 

String

String과 StringBuffer/StringBuilder 클래스의 가장 큰 차이점은 String은 불변(immutable)의 속성을 갖는다는 점이다.

 

String에 새로운 값을 추가하게 되면 기존의 값이 변경되는 것이 아니라

추가한 값은 새로운 메모리영역을 할당받고, 기존의 값은 GC(garbage collection)에 의해 사라지게 된다.

 

즉, String 클래스는 불변하기 때문에 문자열을 수정하는 시점에서 새로운 String 인스턴스가 생성되는 것이다.

 

따라서 변하지 않는 문자열을 자주 읽어들이는 경우 String은 좋은 성능을 낸다.

하지만 문자열 추가, 수정, 삭제등의 연산이 자주 발생하는 경우에는 힙 메모리(Heap)에 많은 임시 가비지(Garbage)가 생성

되어 힙메모리가 부족으로 어플리케이션 성능에 치명적인 영향을 끼치게 된다.

 

StringBuffer / StringBuilder

메모리 부족과 같은 문제를 해결하기 위해 **가변성(mutable)**을 가지는 StringBuffer / StringBuiler를 사용한다.

StringBuffer / StringBuiler는 .append(), .delete()등의 API를 이용하여 동일 객체내에서 문자열을 변경하는 것이 가능하다.

 

StringBuffer vs StringBuilder

  • StringBuffer

동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전(thread-safe)하다.

 

  • StringBuilder

동기화를 지원하지 않기때문에 멀티쓰레드 환경에서 사용하는 것은 적합하지 않지만, 동기화를 고려하지 않는 만큼 단일쓰레드에서 성능은 훨씬 뛰어나다.

저작자표시 비영리 (새창열림)

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

[JAVA] 날짜와 시간 API 정리  (0) 2022.01.24
[Java] 디자인패턴 - 싱글톤 패턴 (singleton pattern)  (0) 2021.12.01
[Java] 람다식 (Lambda Expression)  (0) 2021.11.26
[Java] Stream API  (0) 2021.11.24
[Java] 컬렉션 (Collection) - Map  (0) 2021.11.23
  1. String
  2. StringBuffer / StringBuilder
  3. StringBuffer vs StringBuilder
'JAVA/JAVA' 카테고리의 다른 글
  • [JAVA] 날짜와 시간 API 정리
  • [Java] 디자인패턴 - 싱글톤 패턴 (singleton pattern)
  • [Java] 람다식 (Lambda Expression)
  • [Java] Stream API
Anna-Jin
Anna-Jin
Anna-Jin
내일 한걸음 더
Anna-Jin
TOTAL
TODAY
YDAY
  • CATEGORY (212)
    • Project (0)
      • Zero2One.Dev (0)
    • Algorithm (40)
      • Leetcode (20)
      • Programmers (1)
      • CODETREE (0)
      • Baekjoon (7)
      • etc (12)
    • JAVA (42)
      • JAVA (20)
      • 점프투자바 (16)
      • 이것이 자바다 (6)
    • Spring boot (20)
    • Database (9)
    • CS (11)
    • Study (80)
      • Trouble Shooting (11)
      • TIL (50)
      • WIL (11)
      • Etc (8)
    • Review (10)
    • Projects (0)
      • Blog (0)

BLOG MENU

  • GITHUB
  • RESUME

공지사항

POPULAR POSTS

태그

  • 리트코드
  • MySQL
  • Algorithm
  • 자료구조
  • 코테
  • 삽질로그
  • til
  • JPA
  • 코딩테스트
  • 항해99
  • 알고리즘
  • 트러블슈팅
  • 회고록
  • leetcode
  • spring boot
  • 확인문제
  • Wil
  • Java
  • 자바
  • 이것이 자바다

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
Anna-Jin
[JAVA] String, StringBuffer, StringBuilder 차이 및 장단점
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.