String, StringBuilder, StringBuffer

2016. 6. 30. 12:06·Software Engineering
반응형

저는 가끔 String 관련 클래스가 많다는 생각을 합니다. 아마도 그 만큼 요구되는 바가 많다는 거겠죠.


최근에 코딩 테스트를 했는데 이거 왠걸...

String 계열 클래스는 좀 알아두는게 코딩할 때 좋을 것 같네요.


자, 무슨 차이가 있는지 궁금하기도 하고, 최근에 제가 작업하던 JSON 파싱 관련해서 에러가 난 원인이 바로 이 내용이였기에 공유 합니다.


String 과 스트링버퍼, 스트링 빌더는 큰 차이점이 있습니다.


String 은 한번 생성되면 불변입니다. 객체로서 생성되면 메모리 공간이 변하지 않습니다. 고정된 것이죠. 그렇기 때문에 문자열 처리 작업이 모두 새로 객체를 생성해서 하게 합니다. 그러니까 애초부터 그렇게 설계된 클래스인거죠.


반면에서 StringBuffer 나 StringBuilder 는 가변적입니다. String 과 다르게 동작합니다. 내부 공간이 버퍼이고 가변적으로 늘리면서 유연하게 동작합니다.


그래서 String 에 비해서 성능이 좋습니다.


하지만 StringBuffer 와 StringBuilder 는 큰 차이점이 있습니다. 동기화 문제이죠.

StringBuffer 는 각 메서드 별로 동기화 키워드가 붙어 있습니다.

반면에 StringBuilder 는 그렇지 않고요.


멀티 쓰레드 환경에서는 StringBuffer 를,

단일 쓰레드 환경에서는 StringBuilder 를 사용하는 것이 좋습니다.



메모리 공간

동기화 여부

String

 불변

비동기

StringBuffer

 가변

 동기

 StringBuilder

 가변

 비동기





저작자표시 비영리 변경금지 (새창열림)

'Software Engineering' 카테고리의 다른 글

Variable initialization  (0) 2017.10.19
Get display size  (0) 2016.12.23
파일 위치 검색 명령어 2  (0) 2016.04.15
리눅스 용량 확인  (0) 2015.11.09
자바 변수형  (0) 2014.09.26
'Software Engineering' 카테고리의 다른 글
  • Variable initialization
  • Get display size
  • 파일 위치 검색 명령어 2
  • 리눅스 용량 확인
fogthegreat
fogthegreat
아주 오랫동안 이것 저것 개발하면서 배우고 찾아 본 것들을 적거나 모았습니다. 불편한 점이 있다면 알려주세요. (과거에 불펌한 글들을 모두 제거하고 있는 중이에요. 🙏)
  • fogthegreat
    꿈소년의 개발 이야기
    fogthegreat
  • 전체
    오늘
    어제
    • 전체보기 (242)
      • Software Engineering (56)
      • Android Development (78)
      • 일상다반사 (63)
      • 책에 대한 거의 모든 것 (11)
      • 영어공부 (1)
      • ETC (0)
      • 챌린지 (1)
      • Do it 스터디! (32)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 향로
    • 청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 …
    • WhoRU? Story...♡
    • Snapshot
    • 두잇! - 이지스퍼블리싱
    • 제이펍의 참 똑똑한 2비트 책 이야기
    • Inpa Dev
  • 공지사항

  • 인기 글

  • 태그

    build.gradle
    안철수
    Eclipse
    Android 4.1
    JavaScript
    하버드
    linux
    Android
    java
    gradle
    안드로이드 개발
    보안
    개발
    탐지기법
    hcj
    js
    kotlin
    구글
    ActiveX
    css
    google
    노개북
    OOM
    git
    C++
    자바
    코틀린
    안드로이드
    html
    리눅스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
fogthegreat
String, StringBuilder, StringBuffer
상단으로

티스토리툴바