public final class StringBuffer implements java.io.Serializable
{
private char[] value;
...
}
StringBuffer의 생성자
: StringBuffer클래스의 인스턴스를 생성할 때, 적절한 길이의 char형 배열이 생성되고, 이 배열은 문자열을 저장하고 편집하기 위한 공간(buffer)으로 사용된다.
- StringBuffer인스턴스를 생성할 때는 생성자 StringBuffer(int length)를 사용해서 StringBuffer인스턴스에 저장될 문자열의 길이를 고려하여 여유있는 크기로 지정하는 것이 좋다.
- 크기 지정 X → 16개 문자 저장할 수 있는 버퍼 생성
- 배열의 길이는 변경될 수 없으므로 새로운 길이의 배열을 생성한 후에 이전 배열 값을 복사해야 함.
StringBuffer의 변경
★ String과 달리 StringBuffer는 내용을 변경할 수 있다.
- append() : 반환타입이 StringBuffer, 자신의 주소를 반환
StringBuffer sb = new String("abc");
sb.append("123");
sb.append("ZZ");
// same
StringBuffer sb = new String("abc");
sb.append("123").append("ZZ"); // {sb}.append("ZZ");
StringBuffer의 비교
- equals메서드를 오버라이딩 하지 않음 → equals메서드 사용시 등가비교연산자(==)와 같은 결과
StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
System.out.println(sb==sb2); // false
System.out.println(sb.equals(sb2)); // false
- toString()은 오버라이딩 됨 → toString() 호출 시, 담고 있는 문자열을 String으로 반환
String s = sb.toString();
String s2 = sb2.toString();
System.out.println(s.equals(s2)); // true
StringBuffer클래스의 생성자와 메서드
메서드 | 설명 | 예제 | 결과 |
StringBuffer() | 16문자를 담을 수 있는 버퍼를 가진 StringBuffer인스턴스를 생성한다. | StringBuffer sb = new StringBuffer(); | sb = "" |
StringBuffer(int length) | 지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer인스턴스를 생성한다. | StringBuffer sb = new StringBuffer(10); | sb = "" |
StringBuffer(String str) | 지정된 문자열 값을 갖는 StringBuffer 인스턴스를 생성한다. | StringBuffer sb = new StringBuffer("Hi"); | sb = "Hi" |
int capacity() | StringBuffer인스턴스의 버퍼크기를 알려준다. length()는 버퍼에 담긴 문자열의 길이를 알려준다. | 생략 | 생략 |
StringBuffer delete(int start, int end) | 시작위치부터 끝 위치 사이에 있는 문자를 제거한다. 끝 위치 문자는 제외. | 생략 | 생략 |
StringBuffer replace(int start, int end, String str) | 지정된 범위의 문자들을 주어진 문자열로 바꾼다. end위치의 문자는 범위에 포함 X | StringBuffer sb = new StringBuffer("0123456"); sb.replace(3,6,"AB"); |
sb = "012AB6" |
StringBuilder 란?
: 멀티쓰레드에 안전하도록 동기화되어 있다.
: StringBuffer에서 쓰레드의 동기화만 뺀 것이므로 이름만 바꿔서 사용하면 된다.
'Language > java' 카테고리의 다른 글
java.lang 패키지(래퍼 클래스) (0) | 2022.07.14 |
---|---|
java.lang 패키지(Math 클래스) (0) | 2022.07.14 |
Java_Study_ java.lang 패키지(String클래스) (0) | 2022.07.12 |
Java_Study_ java.lang 패키지(Object클래스) (0) | 2022.07.12 |
Java_Study 예외처리 (0) | 2022.07.11 |
댓글