CharBuffer — 문자 버퍼
CharBuffer — 문자 버퍼
CharBuffer는 문자 버퍼(char buffer)예요. 이 클래스는 문자 버퍼에 대해 네 가지 범주의 연산을 정의해요: 절대·상대 get/put 메서드(단일 문자 읽기·쓰기), 절대·상대 일괄 get 메서드(이 버퍼의 연속 문자를 배열로 전송), 절대·상대 일괄 put 메서드(문자 배열·문자열·다른 문자 버퍼의 연속 문자를 이 버퍼로 전송), 그리고 문자 버퍼를 컴팩트하는 메서드예요.
본문
public abstract sealed class CharBuffer extends Buffer implements Comparable<CharBuffer>, Appendable, CharSequence, Readable
문자 버퍼예요. 문자 버퍼는 allocation(버퍼 내용의 공간 할당), 기존 문자 배열이나 문자열을 버퍼로 wrap(감싸기), 또는 기존 바이트 버퍼의 뷰 만들기를 통해 생성될 수 있어요.
바이트 버퍼와 마찬가지로 문자 버퍼는 direct 또는 non-direct예요. 이 클래스의 wrap 메서드로 만든 문자 버퍼는 non-direct예요. 바이트 버퍼의 뷰로 만든 문자 버퍼는 바이트 버퍼 자체가 direct인 경우에만 direct예요. isDirect 메서드로 direct 여부를 알 수 있어요.
이 클래스는 CharSequence 인터페이스를 구현하므로 문자 버퍼는 문자 시퀀스가 수용되는 곳(예: 정규식 패키지 java.util.regex)에서 사용될 수 있어요.
값을 반환하지 않는 메서드는 호출된 버퍼를 반환하도록 지정돼 있어 메서드 호출을 연결(chain)할 수 있어요. 예를 들어:
cb.put("text/").put(subtype).put("; charset=").put(enc);
는 다음 문장과 같아요:
cb.put("text/");
cb.put(subtype);
cb.put("; charset=");
cb.put(enc);
Java 1.4부터 사용할 수 있어요.
네 가지 연산 범주
- 단일 문자 — 절대·상대 get/put 메서드로 단일 문자를 읽고 써요.
- 일괄 get — 절대·상대 일괄 get 메서드로 이 버퍼의 연속 문자 시퀀스를 배열로 전송해요.
- 일괄 put — 절대·상대 일괄 put 메서드로 문자 배열·문자열·다른 문자 버퍼의 연속 문자 시퀀스를 이 버퍼로 전송해요.
- 컴팩트 — 문자 버퍼를 컴팩트하는 메서드.
선택 연산
선택 연산(optional operation)으로 지정된 메서드는 읽기 전용 CharBuffer에서 호출되면 ReadOnlyBufferException을 던져요. array와 arrayOffset 메서드는 CharBuffer가 접근 가능한 문자 배열로 뒷받침되지 않으면(읽기 전용이든 아니든) UnsupportedOperationException을 던져요.
주요 정적 팩토리 메서드
static CharBuffer allocate(int capacity)— 새 문자 버퍼를 할당해요.static CharBuffer wrap(char[] array)/wrap(char[] array, int offset, int length)— 문자 배열을 버퍼로 감싸요.static CharBuffer wrap(CharSequence csq)/wrap(CharSequence csq, int start, int end)— 문자 시퀀스를 버퍼로 감싸요.
주요 연산 메서드
abstract char get()/char get(int index)— 상대·절대 get 메서드.abstract CharBuffer put(char c)/put(int index, char c)— 상대·절대 put 메서드 (선택 연산).abstract CharBuffer compact()— 이 버퍼를 컴팩트해요 (선택 연산).abstract CharBuffer duplicate()— 이 버퍼의 내용을 공유하는 새 문자 버퍼를 만들어요.abstract CharBuffer slice()— 이 버퍼 내용의 공유 하위 시퀀스인 새 문자 버퍼를 만들어요.abstract CharBuffer asReadOnlyBuffer()— 이 버퍼의 내용을 공유하는 새 읽기 전용 문자 버퍼를 만들어요.CharBuffer append(char c)/append(CharSequence csq)— 이 버퍼에 주어진 문자/문자 시퀀스를 추가해요 (선택 연산).final boolean hasArray()— 이 버퍼가 접근 가능한 문자 배열로 뒷받침되는지 여부를 알려줘요.final char[] array()— 이 버퍼를 뒷받침하는 문자 배열을 반환해요 (선택 연산).int compareTo(CharBuffer that)— 이 버퍼를 다른 버퍼와 비교해요.int mismatch(CharBuffer that)— 이 버퍼와 주어진 버퍼 사이의 첫 번째 불일치의 상대 인덱스를 찾아 반환해요.boolean equals(Object ob)— 이 버퍼가 다른 객체와 같은지 여부를 알려줘요.