-
CHAPTER 9. (3) ★ StringBuffer 클래스란? (★ StringBuffer 메서드 포함)java/ㄴ CHAPTER 9. java.lang 패키지와 유용한 클래스 2020. 4. 23. 12:25
★
StringBuffer 클래스
- 지정된 문자열 변경 가능 (내부적으로 문자열 편집을 위한 버퍼 가짐)
- 인스턴스 생성 할 때 크기 지정 가능
ㄴ 인스턴스 생성 시 char 배열 생성, 생성된 배열은 문자열 저장, 편집을 위한 공간으로 사용됨
- 버퍼 크기 미지정시 16개 문자 저장 가능한 크기의 기본 버퍼 제공
★ 배열 길이는 변경될 수 없으므로 새로운 길이의 배열 생성 후, 이전 배열 값을 새로운 배열에 복사함
append()
- 반환타입이 StringBuffer, 자신의 주소를 반환
ex.
StringBuffer sb = new StringBuffer("abc"); // sb = abc123
sb.append("123"); // sb = abc123
StringBuffer sb2 = sb.append("ZZ") // sb2 = abc123ZZ
System.out.println(sb) // sb = abc123ZZ
= sb와 sb2 모두 같은 StringBuffer 인스턴스를 가리키고 있으므로 같은 내용 출력됨
=> 연속적으로 append() 호출 가능
ex.
1.1234StringBuffer sb = new StringBuffer("abc");sb.append("123");sb.append("ZZ");or
2.12StringBuffer sb = new StringBuffer("abc");sb.append("123").append("ZZ");= 모두 가능
단점
- equals 메서드 오버라이딩 하지 않아서 == 와 같은 결과 출력
문자열 비교방법
- toString()은 오버라이딩 되어있기 때문에
1. toString() 호출해서 String 인스턴스 획득
2. equals() 사용해서 비교
ex.1234567891011StringBuffer sb = new StringBuffer("abc");StringBuffer sb2 = new StringBuffer("abc");System.out.println(sb==sb2); // falseSystem.out.println(sb.equals(sb2)); // falseString s = sb.toString();String s2 = sb2.toString();System.out.println(sb.equals(sb2)); // true
StringBuffer 장점(단점)
- 멀티쓰레드에 안전하도록 동기화됨
= 멀티쓰레드로 작성된 프로그램이 아닌 경우, 동기화는 불필요하게 성능만 떨어뜨림
=> StringBuilder 등장
StringBuilder
- StringBuffer와 완전히 똑같은 기능으로 작성
- 쓰레드의 동기화만 제거함
* 지금까지 작성한 프로그램은 전부 싱글 쓰레드'java > ㄴ CHAPTER 9. java.lang 패키지와 유용한 클래스' 카테고리의 다른 글
CHAPTER 9. (5) ★ 래퍼Wrapper 클래스란? (★ Number 클래스, 문자열 숫자로 변환, 오토박싱 언박싱 포함) (0) 2020.04.23 CHAPTER 9. (4) ★ Math 클래스란? (★ Math 클래스 메서드 포함) (0) 2020.04.23 CHAPTER 9. (2) ★ String클래스란? (★★★ String 클래스 생성자, 메서드 포함) (0) 2020.04.23 CHAPTER 9. (1) java.lang 패키지란? (★ Object 클래스 주요 메서드 포함) (0) 2020.04.23