String,StringBuffer, StringBuilder 차이점

2021. 2. 24. 14:14·개발중/Java
728x90
반응형

 String   StringBuffer   StringBuilder  차이점  

 

 

String          = immutable(불변)

StringBuffer  = mutable(가변)

StringBuilder = mutable(가변)

 

String          

다시 말해서, String 클래스는

StringBuffer 클래스나 StringBuilder 클래스와 다르게 리터럴을 통해 생성되면

그 인스턴스의 메모리 공간은 절대 변하지 않는다.

 

 


StringBuffer

StringBuffer는 불변객체가 아니다. 

내부적으로 buffer를 가지고 있는데,

StringBuffer 인스턴스를 생성할때는 적절한 길이의 char형 배열이 생성되고,

이 배열은 문자열을 저장하고 편집할때 사용하는 buffer가 된다.

 

여기서 적절한 길이를 지정해야 하는 이유는,

수정하는 문자열이 버퍼의 길이를 넘어가면 버퍼의 길이를 늘려주는 작업이 추가되기 때문이다.

배열은 길이를 바꿀수 없기때문에 이전에 작업하던 배열의 값을 복사해서 넣어준다.


 

StringBuilder 

StringBuilder는 기본적으로 사용하는 메소드나 사용법은 동일하여 서로 호환이 됩니다.

(append(), delete(), reverse() 등)

StringBuffer와의 차이점은 동기화를 하는지 안하는지의 차이인데

StringBuffer - 동기화O

StringBuilder - 동기화X

싱글쓰레드 환경에서의 개발이라면 StringBuilder를 멀티쓰레드 환경이라면 동기화처리가된 StringBuffer를 사용하면 됩니다.

즉, StringBuffer의 동기화 처리를 빼고 만들어진 클래스가 StringBuilder입니다.

 

728x90
반응형
저작자표시 (새창열림)

'개발중 > Java' 카테고리의 다른 글

java 8 stream api documentation  (2) 2021.02.24
[Java] Java8 람다식  (0) 2021.02.24
Demon 만들기 (API 사용)  (0) 2021.02.23
java 에서 data → excel 파일  (0) 2021.02.10
mysql timeStamp 자바에서 날짜로 만들기  (0) 2021.01.26
'개발중/Java' 카테고리의 다른 글
  • java 8 stream api documentation
  • [Java] Java8 람다식
  • Demon 만들기 (API 사용)
  • java 에서 data → excel 파일
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (948)
      • 개발중 (635)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (88)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (27)
        • 기록 (3)
        • 캐글 스터디 (3)
        • R (12)
        • MLOps (9)
      • 논문 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BackendDevelopment
    리눅스 마스터 1급
    네트워크 관리사 요약
    jpa
    리눅스 마스터
    네트워크 관리사 2급 실기
    Spring
    파이썬 알고리즘
    네트워크 관리사 학점
    네트워크 관리사 실기
    git
    REST API
    redis
    리눅스 마스터 1급 요약
    springboot
    java
    리눅스 1급 요약
    네트워크 관리사 자격증
    Git 저장소
    리눅스 마스터 요약
    네트워크 관리사 2급
    파이썬
    쿠버네티스 스터디
    네트워크 관리사
    VUE
    알고리즘
    쿠버네티스
    docker
    리눅스 마스터 1급 정리
    스프링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
String,StringBuffer, StringBuilder 차이점
상단으로

티스토리툴바