자바

[자바 개념] StringBuffer, StringBuilder

라임온조 2023. 2. 6. 18:22

1. StringBuffer와 StringBuilder

1) 개념

문자열을 다루는 클래스의 한 종류

2) 특징

  • 문자열을 저장하는 가변 버퍼를 가지고 있기 때문에 저장된 문자열의 수정이 가능하다
  • 문자열의 크기가 늘어나면 내부 버퍼 크기를 자동으로 조절한다.
  • 한번 값이 할당되더라도 기존 데이터에 새로운 데이터를 더하는 방식을 취해서 속도가 빠르다
  • AbstractStringBuilder 라는 추상 클래스를 상속받는다.
  • 값이 변경되더라도 같은 주소 공간을 참조하게 된다.

3) StringBuffer와 StringBuilder의 차이점

StringBuffer

  • 동기화를 지원하여 멀티 스레드 환경에서도 안전하게 동작한다

StringBuilder

  • 동기화를 지원하지 않는다
  • 동기화를 지원하지 않기 대문에 StringBuffer보다 속도면에서 성능이 좋다.

4) 생성

StringBuffer sb = new StringBuffer("a"); // a라는 값을 가진 StringBuffer 생성
StringBuffer sb = new StringBuffer(); // 초기 버퍼 크기가 16인 StringBuffer 생성
StringBuffer sb = new StringBuffer(10); //10이라는 버퍼 크기를 갖는 StringBuffer 생성

StringBuilder sb = new StringBuilder("a"); //a라는 값을 가진 StringBuilder 생성
StringBuilder sb = new StringBuilder(); //초기 버퍼 크기가 16인 StringBuilder 생성
StringBuilder sb = new StringBuilder(10); //초기 버퍼 크기가 10인 StringBuilder 생성

5) 메소드

StringBuffer sb = new StringBuffer("a");

sb.append("bc"); //sb에 bc를 합친 "abc"를 가진 StringBuffer return
sb.capacity(); //sb라는 StringBuffer의 현재 크기 return
sb.length(); //sb라는 StringBuffer가 현재 가지고 있는 문자열의 길이 return
sb.reverse(); //sb라는 StringBuffer에 있는 문자들을 반대 순서로 변경
sb.toString(); //sb라는 StringBuffer를 String으로 변경하여 String을 return
sb.insert(0, "abc"); //sb라는 StringBuffer의 0번째 index에 "abc"를 삽입

//StringBuilder도 위와 같은 메소드를 가짐//

2. String과 StringBuilder, StringBuffer

1) String

  • 간단한 문자열을 처리할 때
  • 문자열이 변하지 않을 때

2) StringBuilder

  • 단일 스레드 환경에서 문자열의 추가, 수정, 삭제가 빈번히 일어나는 경우

3) StringBuffer

  • 멀티 스레드 환경에서 문자열의 추가, 수정, 삭제가 빈번히 발생하는 경우

 

 

 

String같은 경우는 불변성을 갖는 특징을 가지고 있다. 자세한 건 아래 링크 참고

https://lmj-coding-diary.tistory.com/9

 

[자바 개념] Character, String

1. Character 메소드 1) isUpperCase, isLowerCase Character.isUpperCase(c) // t 혹은 f return 2) toUpperCase, toLowerCase Character.toLowerCase(c) // c를 소문자로 바꾼 결과 return 3) forDigit int num = 7; Character.forDigit(num, 10); //num을 1

lmj-coding-diary.tistory.com

 

참고한 곳

https://blogshine.tistory.com/236

 

[Java] StringBuilder와 StringBuffer의 차이

1. 글을 작성한 목표 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 Java에서 String 클래스는 불변성을 갖습니다. 따라서 변하지 않는 문자열을 자주 사용하는 경우엔 좋은 성능을 기대할 수

blogshine.tistory.com

https://velog.io/@gillog/String-Class%EC%99%80-%EC%84%B1%EB%8A%A5-%EC%9D%B4%EC%8A%88-String-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

'자바' 카테고리의 다른 글

[자바 개념] Optional<T>  (0) 2023.03.08
[자바 개념] 정규표현식, Pattern  (0) 2023.02.10
[자바 개념] 자바 데이터 타입  (0) 2023.01.13
[자바 개념] stream  (0) 2023.01.13
[자바 개념] switch  (0) 2023.01.12