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
'자바' 카테고리의 다른 글
[자바 개념] 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 |