JavaTM Platform
Standard Ed. 6

java.nio
클래스 CharBuffer

java.lang.Object 
  상위를 확장 java.nio.Buffer 
      상위를 확장 java.nio.CharBuffer
모든 구현된 인터페이스:
Appendable , CharSequence , Comparable <CharBuffer >, Readable


public abstract class CharBuffer
extends Buffer
implements Comparable <CharBuffer >, Appendable , CharSequence , Readable

문자 버퍼입니다.

이 클래스는, 문자 버퍼에 대한 조작을 4 개의 카테고리로 분류합니다.

문자 버퍼는, 버퍼의 컨텐츠에 용량을 할당하는 방법 (용량의 할당 ), 기존의 char 배열이나 캐릭터 라인을 버퍼에 랩 하는 방법 ( ), 또는 기존의 byte 버퍼의 「」를 작성하는 방법으로 작성할 수 있습니다.

byte 버퍼와 같게, 문자 버퍼에도「다이렉트」버퍼와 「비다이렉트」버퍼가 있습니다. 이 클래스의 wrap 메소드로 작성된 문자 버퍼는 비다이렉트 버퍼가 됩니다. byte 버퍼의 뷰로서 작성된 문자 버퍼는, byte 버퍼가 다이렉트 버퍼인 경우에 한정해 다이렉트 버퍼가 됩니다. 문자 버퍼가 다이렉트 버퍼일지 어떨지는,isDirect 메소드를 호출하는 것으로 판단할 수 있습니다.

이 클래스는 CharSequence 인터페이스를 구현하고 있습니다. 이 때문에, 문자 순서를 받아들일 수 있는 장소이면 어디에서라도, 문자 버퍼를 사용할 수 있습니다. 예를 들어, 정규 표현의 패키지 java.util.regex 에서의 사용이 가능합니다.

이 클래스의 메소드중 반환값을 돌려주지 않는 것은, 자신을 호출한 버퍼의 정보를 돌려줍니다. 이것을 응용해, 메소드 호출을 연쇄시킬 수가 있습니다. 예를 들어, 다음과 같은 연속한 문장이 있다고 합시다.

 cb.put("text/");
 cb.put(subtype);
 cb.put("; charset=");
 cb.put(enc);
이것들은, 다음의 한 문장으로 옮겨놓을 수 있습니다.
 cb.put("text/"). put(subtype). put("; charset="). put(enc);

도입된 버젼:
1.4

메소드의 개요
static CharBuffer allocate (int capacity)
          새로운 문자 버퍼를 할당합니다.
 CharBuffer append (char c)
          지정된 문자를 이 버퍼에 추가합니다 (옵션).
 CharBuffer append (CharSequence  csq)
          지정된 문자 순서를 이 버퍼에 추가합니다 (옵션).
 CharBuffer append (CharSequence  csq, int start, int end)
          지정된 문자 순서의 서브 순서를 이 버퍼에 추가합니다 (옵션).
 char[] array ()
          현재의 버퍼를 보조하는 char 배열을 돌려줍니다 (옵션).
 int arrayOffset ()
          현재의 버퍼의 보조 배열내에 있는, 이 버퍼의 최초의 요소의 오프셋(offset)를 돌려줍니다 (옵션).
abstract  CharBuffer asReadOnlyBuffer ()
          현재의 버퍼의 컨텐츠를 공유하는 새로운 read 전용 문자 버퍼를 작성합니다.
 char charAt (int index)
          현재 위치로부터의 상대 위치로서 지정된 인덱스 위치에 있는 문자를 읽어들입니다.
abstract  CharBuffer compact ()
          현재의 버퍼를 압축합니다 (옵션).
 int compareTo (CharBuffer  that)
          현재의 버퍼를 다른 버퍼와 비교합니다.
abstract  CharBuffer duplicate ()
          현재의 버퍼의 컨텐츠를 공유하는 새로운 문자 버퍼를 작성합니다.
 boolean equals (Object  ob)
          현재의 버퍼가 다른 객체와 등가일지 어떨지를 판단합니다.
abstract  char get ()
          상대 「get」메소드입니다.
 CharBuffer get (char[] dst)
          상대 일괄 「get」메소드입니다.
 CharBuffer get (char[] dst, int offset, int length)
          상대 일괄 「get」메소드입니다.
abstract  char get (int index)
          절대 「get」메소드입니다.
 boolean hasArray ()
          현재의 버퍼가 액세스 가능한 char 배열에 연동할지 어떨지를 판단합니다.
 int hashCode ()
          현재의 버퍼의 현재의 해시 코드를 돌려줍니다.
abstract  boolean isDirect ()
          현재의 문자 버퍼가 다이렉트 버퍼일지 어떨지를 판단합니다.
 int length ()
          현재의 문자 버퍼의 버퍼장을 돌려줍니다.
abstract  ByteOrder order ()
          현재의 버퍼의 바이트 순서를 가져옵니다.
abstract  CharBuffer put (char c)
          상대 「put」메소드입니다 (옵션).
 CharBuffer put (char[] src)
          상대 일괄 「put」메소드입니다 (옵션).
 CharBuffer put (char[] src, int offset, int length)
          상대 일괄 「put」메소드입니다 (옵션).
 CharBuffer put (CharBuffer  src)
          상대 일괄 「put」메소드입니다 (옵션).
abstract  CharBuffer put (int index, char c)
          절대 「put」메소드입니다 (옵션).
 CharBuffer put (String  src)
          상대 일괄 「put」메소드입니다 (옵션).
 CharBuffer put (String  src, int start, int end)
          상대 일괄 「put」메소드입니다 (옵션).
 int read (CharBuffer  target)
          지정된 문자 버퍼에 캐릭터 라인을 읽어들입니다.
abstract  CharBuffer slice ()
          현재의 버퍼의 컨텐츠의 공유의 서브 순서를 컨텐츠로 하는 새로운 문자 버퍼를 작성합니다.
abstract  CharSequence subSequence (int start, int end)
          현재의 버퍼의 지정된 서브 순서 (현재 위치로부터의 상대 위치)를 나타내는 새로운 문자 버퍼를 작성합니다.
 String toString ()
          현재의 버퍼내에 남아 있는 문자를 포함한 캐릭터 라인을 돌려줍니다.
static CharBuffer wrap (char[] array)
          char 배열을 버퍼에 랩 합니다.
static CharBuffer wrap (char[] array, int offset, int length)
          char 배열을 버퍼에 랩 합니다.
static CharBuffer wrap (CharSequence  csq)
          문자 순서를 버퍼에 랩 합니다.
static CharBuffer wrap (CharSequence  csq, int start, int end)
          문자 순서를 버퍼에 랩 합니다.
 
클래스 java.nio. Buffer 로부터 상속된 메소드
capacity , clear , flip , hasRemaining , isReadOnly , limit , limit , mark , position , position , remaining , reset , rewind
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , finalize , getClass , notify , notifyAll , wait , wait , wait
 

메소드의 상세

allocate

public static CharBuffer  allocate(int capacity)
새로운 문자 버퍼를 할당합니다.

새로운 버퍼의 위치는 0, 리밋트는 용량과 같은 값이 됩니다. 마크는 정의되지 않습니다. 이 버퍼는보조 배열 을 이용해, 그배열 오프셋(offset) 는 0 이 됩니다.

파라미터:
capacity - 새로운 버퍼의 용량 (문자수)
반환값:
새로운 문자 버퍼
예외:
IllegalArgumentException - capacity 가 부의 정수인 경우

wrap

public static CharBuffer  wrap(char[] array,
                              int offset,
                              int length)
char 배열을 버퍼에 랩 합니다.

새로운 버퍼는 지정된 char 배열에 의해 보조됩니다. 버퍼로 변경을 더하면(자) 배열도 변경되어 배열로 변경을 더하면(자) 버퍼도 변경됩니다. 새로운 버퍼의 용량은 array.length, 위치는 offset, 리밋트는 offset + length 가 됩니다. 마크는 정의되지 않습니다. 지정된 배열이보조 배열 이 되어, 그배열 오프셋(offset) 는 0 이 됩니다.

파라미터:
array - 새로운 버퍼를 보조하는 배열
offset - 사용하는 서브 배열의 오프셋(offset). array.length 이하의 부가 아닌 값이 아니면 안된다. 새로운 버퍼의 위치는, 이 값으로 설정되는
length - 사용하는 서브 배열의 길이. array.length - offset 이하의 부가 아닌 값이 아니면 안된다. 새로운 버퍼의 리밋트는,offset + length 로 설정된다
반환값:
새로운 문자 버퍼
예외:
IndexOutOfBoundsException - offset 파라미터와 length 파라미터의 전제 조건이 채워지지 않은 경우

wrap

public static CharBuffer  wrap(char[] array)
char 배열을 버퍼에 랩 합니다.

새로운 버퍼는 지정된 char 배열에 의해 보조됩니다. 버퍼로 변경을 더하면(자) 배열도 변경되어 배열로 변경을 더하면(자) 버퍼도 변경됩니다. 새로운 버퍼의 용량과 리밋트는 array.length, 위치는 0 이 됩니다. 마크는 정의되지 않습니다. 지정된 배열이보조 배열 이 되어, 그배열 오프셋(offset) 는 0 이 됩니다.

파라미터:
array - 현재의 버퍼를 보조하는 배열
반환값:
새로운 문자 버퍼

read

public int read(CharBuffer  target)
         throws IOException 
지정된 문자 버퍼에 캐릭터 라인을 읽어들입니다. 버퍼는, put 조작의 결과에 의해 변경되는 이외는, 캐릭터 라인 그대로의 리포지터리(repository)로서 사용됩니다. 버퍼의 플립 (반전)이나 되감기 (되감아) 하행 깨지지 않습니다. 버퍼의 후립핑 (반전)이나 되감기 (되감아) 하행 깨지지 않습니다.

정의:
인터페이스 Readable 내의 read
파라미터:
target - 캐릭터 라인을 읽어들이는 버퍼
반환값:
버퍼에 추가된 문자수. 캐릭터 라인의 소스가 마지막 위치에 있는 경우는 -1
예외:
IOException - 입출력 에러가 발생했을 경우
NullPointerException - target 가 null 의 경우
ReadOnlyBufferException - target 가 읽어내 전용 버퍼의 경우
도입된 버젼:
1.5

wrap

public static CharBuffer  wrap(CharSequence  csq,
                              int start,
                              int end)
문자 순서를 버퍼에 랩 합니다.

새로운 읽기 전용 버퍼의 컨텐츠는, 지정된 문자 순서의 컨텐츠가 됩니다. 버퍼의 용량은 csq.length(), 위치는 start, 리밋트는 end 가 됩니다. 마크는 정의되지 않습니다.

파라미터:
csq - 작성되는 새로운 문자 버퍼의 바탕으로 되는 문자 순서
start - 사용되는 최초의 문자를 나타내는 인덱스. csq.length() 이하의 부가 아닌 값이 아니면 안된다. 새로운 버퍼의 위치는, 이 값으로 설정되는
end - 사용되는 마지막 문자의 다음의 문자를 나타내는 인덱스. start 이상,csq.length() 이하의 값이 아니면 안된다. 새로운 버퍼의 리밋트는, 이 값으로 설정된다
반환값:
새로운 문자 버퍼
예외:
IndexOutOfBoundsException - start 파라미터와 end 파라미터의 전제 조건이 채워지지 않은 경우

wrap

public static CharBuffer  wrap(CharSequence  csq)
문자 순서를 버퍼에 랩 합니다.

새로운 읽기 전용 버퍼의 컨텐츠는, 지정된 문자 순서의 컨텐츠가 됩니다. 새로운 버퍼의 용량과 리밋트는 csq.length(), 위치는 0 이 됩니다. 마크는 정의되지 않습니다.

파라미터:
csq - 작성되는 새로운 문자 버퍼의 바탕으로 되는 문자 순서
반환값:
새로운 문자 버퍼

slice

public abstract CharBuffer  slice()
현재의 버퍼의 컨텐츠의 공유의 서브 순서를 컨텐츠로 하는 새로운 문자 버퍼를 작성합니다.

새로운 버퍼의 컨텐츠는, 현재의 버퍼의 현재 위치로부터 시작됩니다. 현재의 버퍼의 컨텐츠로 변경을 더하면(자), 그 내용이 새로운 버퍼에 반영됩니다. 새로운 버퍼의 컨텐츠로 변경을 더하면(자), 그 내용이 현재의 버퍼에 반영됩니다. 2 개의 버퍼의 위치, 리밋트, 마크의 값은 각각 다릅니다.

새로운 버퍼의 위치는 0, 용량과 리밋트는 이 버퍼내에 남아 있는 문자수가 됩니다. 마크는 정의되지 않습니다. 새로운 버퍼는, 현재의 버퍼가 다이렉트 버퍼인 경우에 한정해 다이렉트 버퍼가 됩니다. 또, 현재의 버퍼가 읽어내 전용 버퍼인 경우에 한정해 읽기 전용 버퍼가 됩니다.

반환값:
새로운 문자 버퍼

duplicate

public abstract CharBuffer  duplicate()
현재의 버퍼의 컨텐츠를 공유하는 새로운 문자 버퍼를 작성합니다.

새로운 버퍼의 컨텐츠는, 현재의 버퍼의 컨텐츠와 같게 됩니다. 현재의 버퍼의 컨텐츠로 변경을 더하면(자), 그 내용이 새로운 버퍼에 반영됩니다. 새로운 버퍼의 컨텐츠로 변경을 더하면(자), 그 내용이 현재의 버퍼에 반영됩니다. 2 개의 버퍼의 위치, 리밋트, 마크의 값은 각각 다릅니다.

새로운 버퍼의 용량, 리밋트, 위치, 마크의 값은, 현재의 버퍼의 대응하는 값과 같게 됩니다. 새로운 버퍼는, 현재의 버퍼가 다이렉트 버퍼인 경우에 한정해 다이렉트 버퍼가 됩니다. 또, 현재의 버퍼가 읽어내 전용 버퍼인 경우에 한정해 읽기 전용 버퍼가 됩니다.

반환값:
새로운 문자 버퍼

asReadOnlyBuffer

public abstract CharBuffer  asReadOnlyBuffer()
현재의 버퍼의 컨텐츠를 공유하는 새로운 read 전용 문자 버퍼를 작성합니다.

새로운 버퍼의 컨텐츠는, 현재의 버퍼의 컨텐츠와 같게 됩니다. 현재의 버퍼의 컨텐츠로 변경을 더하면(자), 그 내용이 새로운 버퍼에 반영됩니다. 그러나, 새로운 버퍼 자체는 읽어내 전용이며, 그 공유 컨텐츠를 변경할 수 없습니다. 2 개의 버퍼의 위치, 리밋트, 마크의 값은 각각 다릅니다.

새로운 버퍼의 용량, 리밋트, 위치, 마크의 값은, 현재의 버퍼의 대응하는 값과 같게 됩니다.

현재의 버퍼가 읽어내 전용의 경우, 이 메소드의 동작은 duplicate 메소드와 완전히 같게 됩니다.

반환값:
새로운 read 전용 문자 버퍼

get

public abstract char get()
상대 「get」메소드입니다. 버퍼의 현재 위치의 문자를 읽어들여, 현재 위치의 값을 증가합니다.

반환값:
버퍼의 현재 위치의 문자
예외:
BufferUnderflowException - 버퍼의 현재 위치가 리밋트 이상인 경우

put

public abstract CharBuffer  put(char c)
상대 「put」메소드입니다 (옵션).

버퍼의 현재 위치로 지정된 문자를 기입해, 현재 위치의 값을 증가합니다.

파라미터:
c - 기입해지는 문자
반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼의 현재 위치가 리밋트 이상인 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

get

public abstract char get(int index)
절대 「get」메소드입니다. 지정된 인덱스 위치의 문자를 읽어들입니다.

파라미터:
index - 문자의 read 위치를 나타내는 인덱스
반환값:
지정된 인덱스 위치의 문자
예외:
IndexOutOfBoundsException - index 가 부의 수인 경우, 또는 버퍼의 리밋트 이상인 경우

put

public abstract CharBuffer  put(int index,
                               char c)
절대 「put」메소드입니다 (옵션).

현재의 버퍼의 지정된 인덱스 위치로 지정된 문자를 기입합니다.

파라미터:
index - 문자의 기입처를 나타내는 인덱스
c - 기입해지는 문자
반환값:
현재의 버퍼
예외:
IndexOutOfBoundsException - index 가 부의 수인 경우, 또는 버퍼의 리밋트 이상인 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

get

public CharBuffer  get(char[] dst,
                      int offset,
                      int length)
상대 일괄 「get」메소드입니다.

이 메소드는, 현재의 버퍼로부터 지정된 배열에 문자를 전송 합니다. 이 버퍼내에 남아 있는 문자수가 요구에 못 미친 경우 (즉,length > remaining() 인 경우), 문자는 일절 전송 되지 않고,BufferUnderflowException 가 throw 됩니다.

그 이외의 경우, 이 메소드는, 현재의 버퍼의 현재 위치로부터 length 문자가 지정된 배열의 지정된 오프셋(offset) 위치에 카피합니다. 그때마다, 현재의 버퍼의 위치가 length 두개증가합니다.

이 메소드를 src.get(dst,  off,  len) 의 형식에서 호출하면(자), 이하의 루프와 완전히 같은 결과가 됩니다.

for (int i = off; i < off + len; i++)
dst[i] = src.get(); 
다만, 현재의 버퍼내에 남아 있는 문자수가 충분한 것을 최초로 확인하는 동작은, 이 메소드 고유합니다. 또, 이 메소드 쪽이 루프보다 효율적입니다.

파라미터:
dst - 문자의 기입처가 되는 배열
offset - 마지막 문자의 기입처가 되는 배열내의 오프셋(offset). dst.length 이하의 부가 아닌 값이 아니면 안되는
length - 지정된 배열에 기입해지는 최대 문자수. dst.length ? offset 이하의 부가 아닌 값이 아니면 안된다
반환값:
현재의 버퍼
예외:
BufferUnderflowException - 현재의 버퍼내에 남아 있는 문자수가 length 보다 적은 경우
IndexOutOfBoundsException - offset 파라미터와 length 파라미터의 전제 조건이 채워지지 않은 경우

get

public CharBuffer  get(char[] dst)
상대 일괄 「get」메소드입니다.

이 메소드는, 현재의 버퍼로부터 지정된 배열에 문자를 전송 합니다. 이 메소드를 src.get(a) 의 형식에서 호출하면(자), 이하의 호출과 같은 결과가 됩니다.

src.get(a, 0, a.length) 

반환값:
현재의 버퍼
예외:
BufferUnderflowException - 현재의 버퍼내에 남아 있는 문자수가 length 보다 적은 경우

put

public CharBuffer  put(CharBuffer  src)
상대 일괄 「put」메소드입니다 (옵션).

이 메소드는, 지정된 소스 버퍼내에 남아 있는 문자를 이 버퍼에 전송 합니다. 소스 버퍼내에 남아 있는 문자수가 이 버퍼내에 남아 있는 문자수보다 많은 경우 (즉,src.remaining() > remaining() 인 경우), 문자는 일절 전송 되지 않고,BufferOverflowException 가 throw 됩니다.

그 이외의 경우, 이 메소드는, 지정된 버퍼의 현재 위치로부터 현재의 버퍼의 현재 위치에 n = src.remaining() 문자를 카피합니다. 그때마다, 양쪽 모두의 버퍼의 위치가 n 두개증가합니다.

이 메소드를 dst.put(src) 의 형식에서 호출하면(자), 이하의 루프와 완전히 같은 결과가 됩니다.

while (src.hasRemaining())
dst.put(src.get()); 
다만, 현재의 버퍼내에 충분한 용량이 있는 것을 최초로 확인하는 동작은, 이 메소드에 고유합니다. 또, 이 메소드 쪽이 루프보다 쭉 효율적입니다.

파라미터:
src - 문자의 read처가 되는 소스 버퍼 (현재의 버퍼 이외)
반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼에, 소스 버퍼의 문자를 포함 가능한 한의 용량이 없는 경우
IllegalArgumentException - 소스 버퍼로서 현재의 버퍼를 지정했을 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

put

public CharBuffer  put(char[] src,
                      int offset,
                      int length)
상대 일괄 「put」메소드입니다 (옵션).

이 메소드는, 지정된 소스 배열로부터 이 버퍼에 문자를 전송 합니다. 배열로부터 카피하는 문자수가 이 버퍼내에 남아 있는 문자수보다 많은 경우 (즉,length > remaining() 인 경우), 문자는 일절 전송 되지 않고,BufferOverflowException 가 throw 됩니다.

그 이외의 경우, 이 메소드는, 지정된 배열의 지정된 오프셋(offset) 위치로부터 현재의 버퍼의 현재 위치에 length 문자를 카피합니다. 그때마다, 현재의 버퍼의 위치가 length 두개증가합니다.

이 메소드를 dst.put(src,  off,  len) 의 형식에서 호출하면(자), 이하의 루프와 완전히 같은 결과가 됩니다.

for (int i = off; i < off + len; i++)
dst.put(a[i]); 
다만, 현재의 버퍼내에 충분한 용량이 있는 것을 최초로 확인하는 동작은, 이 메소드에 고유합니다. 또, 이 메소드 쪽이 루프보다 쭉 효율적입니다.

파라미터:
src - 문자의 read처가 되는 배열
offset - 최초의 문자의 read처가 되는 배열내의 오프셋(offset). array.length 이하의 부가 아닌 값이 아니면 안되는
length - 지정된 배열로부터 읽어내지는 문자수. array.length ? offset 이하의 부가 아닌 값이 아니면 안된다
반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼내에 남아 있는 용량이 부족한 경우
IndexOutOfBoundsException - offset 파라미터와 length 파라미터의 전제 조건이 채워지지 않은 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

put

public final CharBuffer  put(char[] src)
상대 일괄 「put」메소드입니다 (옵션).

이 메소드는, 소스가 되는 지정된 char 배열의 컨텐츠 전체를 현재의 버퍼에 전송 합니다. 이 메소드를 dst.put(a) 의 형식에서 호출하면(자), 이하의 호출과 같은 결과가 됩니다.

dst.put(a, 0, a.length) 

반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼내에 남아 있는 용량이 부족한 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

put

public CharBuffer  put(String  src,
                      int start,
                      int end)
상대 일괄 「put」메소드입니다 (옵션).

이 메소드는, 지정된 캐릭터 라인으로부터 현재의 버퍼에 문자를 전송 합니다. 캐릭터 라인으로부터 카피하는 문자수가 현재의 버퍼내에 남아 있는 문자수보다 많은 경우 (end - start > remaining()), 문자는 일절 전송 되지 않고,BufferOverflowException 가 throw 됩니다.

그 이외의 경우, 이 메소드는, 지정된 캐릭터 라인의 start 인덱스로부터 현재의 버퍼의 현재 위치에 n = end - start 문자를 카피합니다. 그때마다, 현재의 버퍼의 위치가 n 두개증가합니다.

이 메소드를 dst.put(src,  start,  end) 의 형식에서 호출하면(자), 이하의 루프와 완전히 같은 결과가 됩니다.

for (int i = start; i < end; i++)
dst.put(src.charAt(i)); 
다만, 현재의 버퍼내에 충분한 용량이 있는 것을 최초로 확인하는 동작은, 이 메소드에 고유합니다. 또, 이 메소드 쪽이 루프보다 쭉 효율적입니다.

파라미터:
src - 문자의 read처가 되는 캐릭터 라인
start - 최초의 문자의 read처가 되는 캐릭터 라인내의 오프셋(offset). string.length 이하의 부가 아닌 값이 아니면 안되는
end - 최초의 문자의 read처가 되는 캐릭터 라인내의 오프셋(offset) + 1. string.length 이하의 부가 아닌 수가 아니면 안된다
반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼내에 남아 있는 용량이 부족한 경우
IndexOutOfBoundsException - start 파라미터와 end 파라미터의 전제 조건이 채워지지 않은 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

put

public final CharBuffer  put(String  src)
상대 일괄 「put」메소드입니다 (옵션).

이 메소드는, 지정된 소스 캐릭터 라인의 컨텐츠 전체를 현재의 버퍼에 전송 합니다. 이 메소드를 dst.put(s) 의 형식에서 호출하면(자), 이하의 호출과 같은 결과가 됩니다.

dst.put(s, 0, s.length()) 

반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼내에 남아 있는 용량이 부족한 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

hasArray

public final boolean hasArray()
현재의 버퍼가 액세스 가능한 char 배열에 연동할지 어떨지를 판단합니다.

이 메소드의 반환값이 true 이면,array 메소드 및 arrayOffset 메소드를 안전하게 호출할 수가 있습니다.

정의:
클래스 Buffer 내의 hasArray
반환값:
현재의 버퍼가 배열에 연동하고 있어, read 전용이 아닌 경우에 한해 true

array

public final char[] array()
현재의 버퍼를 보조하는 char 배열을 돌려줍니다 (옵션).

현재의 버퍼의 컨텐츠로 변경을 더하면(자), 반환되는 배열의 컨텐츠도 변경됩니다. 그 역도 같습니다.

이 메소드를 호출하기 전에 hasArray 메소드를 호출해, 현재의 버퍼가 액세스 가능한 보조 배열을 가지고 있는 것을 확인합니다.

정의:
클래스 Buffer 내의 array
반환값:
현재의 버퍼를 보조하는 배열
예외:
ReadOnlyBufferException - 현재의 버퍼가 배열에 연동하고 있어, 게다가 읽어들여 전용인 경우
UnsupportedOperationException - 현재의 버퍼가 액세스 가능한 배열을 이용하지 않는 경우

arrayOffset

public final int arrayOffset()
현재의 버퍼의 보조 배열내에 있는, 이 버퍼의 최초의 요소의 오프셋(offset)를 돌려줍니다 (옵션).

현재의 버퍼가 배열에 연동하고 있으면, 그 위치 p 가 배열의 인덱스 p + arrayOffset() 와 일치합니다.

이 메소드를 호출하기 전에 hasArray 메소드를 호출해, 현재의 버퍼가 액세스 가능한 보조 배열을 가지고 있는 것을 확인합니다.

정의:
클래스 Buffer 내의 arrayOffset
반환값:
현재의 버퍼의 배열내에 있는, 이 버퍼의 최초의 요소의 오프셋(offset)
예외:
ReadOnlyBufferException - 현재의 버퍼가 배열에 연동하고 있어, 게다가 읽어들여 전용인 경우
UnsupportedOperationException - 현재의 버퍼가 액세스 가능한 배열을 이용하지 않는 경우

compact

public abstract CharBuffer  compact()
현재의 버퍼를 압축합니다 (옵션).

버퍼의 현재 위치로부터 리밋트까지의 사이에 문자가 존재하는 경우, 이것들을 버퍼의 선두에 카피합니다. 즉, 인덱스 위치 p = position() 의 문자가 인덱스 0 에 카피되어 인덱스 위치 p + 1 의 문자가 인덱스 1 에 카피된다고 하는 것입니다. 인덱스 위치 limit() - 1 의 문자가 인덱스 n = limit() - 1 - p 에 카피될 때까지, 같은 처리가 반복해집니다. 최종적으로 버퍼의 위치는 n+1 로 설정되어 리밋트는 용량의 값과 동일해집니다. 마크는 파기됩니다.

버퍼의 위치는, 0 은 아니고, 카피되는 문자수로 동일해집니다. 따라서, 이 메소드를 호출한 뒤, 곧바로 다른 상대 「put」메소드를 호출할 수가 있습니다.

반환값:
현재의 버퍼
예외:
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우

isDirect

public abstract boolean isDirect()
현재의 문자 버퍼가 다이렉트 버퍼일지 어떨지를 판단합니다.

정의:
클래스 Buffer 내의 isDirect
반환값:
현재의 버퍼가 다이렉트 버퍼인 경우에 한해 true

hashCode

public int hashCode()
현재의 버퍼의 현재의 해시 코드를 돌려줍니다.

문자 버퍼의 해시 코드는, 버퍼내에 남아 있는 요소, 즉 position() ~ limit() - 1 의 요소인 만큼 의존합니다.

버퍼의 해시 코드는 컨텐츠 의존형입니다. 향후 버퍼의 컨텐츠가 변경되지 않는 것이 분명하지 않은 한, 버퍼를 해시 맵 그 외의 데이터 구조의 키로서 사용하는 것은 피해 주세요.

오버라이드(override):
클래스 Object 내의 hashCode
반환값:
현재의 버퍼의 현재의 해시 코드
관련 항목:
Object.equals(java.lang.Object) , Hashtable

equals

public boolean equals(Object  ob)
현재의 버퍼가 다른 객체와 등가일지 어떨지를 판단합니다.

2 개의 문자 버퍼는, 다음의 경우에 한해 등가입니다.

  1. 요소의 형태가 같다

  2. 버퍼내에 남아 있는 요소수가 같다

  3. 버퍼내에 남아 있는 요소의 순서 (개시 위치와는 무관계)가 각 점으로써 동일하다 (pointwise equal)

문자 버퍼가, 그 외의 형태의 객체와 등가가 될 것은 없습니다.

오버라이드(override):
클래스 Object 내의 equals
파라미터:
ob - 현재의 버퍼와 비교하는 객체
반환값:
현재의 버퍼가 지정된 객체와 등가인 경우에 한해 true
관련 항목:
Object.hashCode() , Hashtable

compareTo

public int compareTo(CharBuffer  that)
현재의 버퍼를 다른 버퍼와 비교합니다.

2 개의 문자 버퍼를 비교할 때는, 나머지의 요소의 순서가 사전순서에 비교됩니다. 이 때, 쌍방의 버퍼내에 남아 있는 각 순서의 개시 위치는 고려되지 않습니다.

문자 버퍼와 그 외의 형태의 객체를 비교할 수 없습니다.

정의:
인터페이스 Comparable <CharBuffer > 내의 compareTo
파라미터:
that - 비교 대상의 객체
반환값:
short 버퍼와 그 외의 형태의 객체를 비교할 수 없습니다. 현재의 버퍼가 이제(벌써) 한편의 버퍼보다 작은 경우는 부의 정수, 동일한 경우는 0, 큰 경우는 정의 정수

toString

public String  toString()
현재의 버퍼내에 남아 있는 문자를 포함한 캐릭터 라인을 돌려줍니다.

또, 결과적으로 얻을 수 있는 캐릭터 라인의 마지막 문자는, 인덱스 위치 limit() - 1 에 있는 캐릭터 라인이 됩니다. 이 메소드를 호출해도, 버퍼의 현재 위치는 바뀌지 않습니다.

정의:
인터페이스 CharSequence 내의 toString
오버라이드(override):
클래스 Object 내의 toString
반환값:
지정된 캐릭터 라인

length

public final int length()
현재의 문자 버퍼의 버퍼장을 돌려줍니다.

문자 순서로서 보았을 경우, 문자 버퍼의 버퍼장 (문자수)은, 위치의 값이상, 리밋트의 값보다 작은 값이 됩니다. 이 값은 remaining() 와 등가입니다.

정의:
인터페이스 CharSequence 내의 length
반환값:
현재의 문자 버퍼의 버퍼장

charAt

public final char charAt(int index)
현재 위치로부터의 상대 위치로서 지정된 인덱스 위치에 있는 문자를 읽어들입니다.

정의:
인터페이스 CharSequence 내의 charAt
파라미터:
index - 읽어내지는 문자의 인덱스 (현재 위치로부터의 상대 위치). 이 값은 remaining() 이하의 부가 아닌 값이 아니면 안된다
반환값:
인덱스 위치 position()  + index 에 있는 문자
예외:
IndexOutOfBoundsException - index 의 전제 조건이 채워지지 않은 경우

subSequence

public abstract CharSequence  subSequence(int start,
                                         int end)
현재의 버퍼의 지정된 서브 순서 (현재 위치로부터의 상대 위치)를 나타내는 새로운 문자 버퍼를 작성합니다.

새로운 버퍼는, 현재의 버퍼의 컨텐츠를 공유합니다. 즉, 현재의 버퍼의 컨텐츠가 변경 가능한 경우, 한편의 버퍼로 변경을 더하면(자) 한편의 버퍼도 변경됩니다. 새로운 버퍼의 용량은 현재의 버퍼의 용량과 같게 됩니다. 새로운 버퍼의 위치는 position() + start, 리밋트는 position() + end 가 됩니다. 새로운 버퍼는, 현재의 버퍼가 다이렉트 버퍼인 경우에 한정해 다이렉트 버퍼가 됩니다. 또, 현재의 버퍼가 읽어내 전용 버퍼인 경우에 한정해 읽기 전용 버퍼가 됩니다.

정의:
인터페이스 CharSequence 내의 subSequence
파라미터:
start - 서브 순서내의 최초의 문자를 나타내는 인덱스 (현재 위치로부터의 상대 위치). remaining() 이하의 부가 아닌 값이 아니면 안되는
end - 서브 순서내의 마지막 문자를 나타내는 인덱스 (현재 위치로부터의 상대 위치). start 이상 remaining() 이하의 값이 아니면 안된다
반환값:
새로운 문자 순서
예외:
IndexOutOfBoundsException - start 파라미터와 end 파라미터의 전제 조건이 채워지지 않은 경우

append

public CharBuffer  append(CharSequence  csq)
지정된 문자 순서를 이 버퍼에 추가합니다 (옵션).

이 메소드를 dst.append(csq) 의 형식에서 호출했을 경우, 다음의 호출과 같은 결과를 얻을 수 있습니다.

dst.put(csq.toString()) 

문자 순서 csqtoString 의 스펙에 따라서는, 그 순서 전체가 추가되지 않을 가능성도 있습니다. 예를 들어, 문자 버퍼의 toString 메소드를 호출했을 경우, 그 버퍼의 위치와 리밋트에 의해 정해지는 내용을 가지는 서브 순서가 돌려주어집니다.

정의:
인터페이스 Appendable 내의 append
파라미터:
csq - 추가되는 문자 순서. csqnull 인 경우, 이 문자 버퍼에 null 의 4 문자가 추가된다
반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼내에 남아 있는 용량이 부족한 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우
도입된 버젼:
1.5

append

public CharBuffer  append(CharSequence  csq,
                         int start,
                         int end)
지정된 문자 순서의 서브 순서를 이 버퍼에 추가합니다 (옵션).

csqnull 가 아닐 때에, 이 메소드를 dst.append(csq, start, end) 의 형식에서 호출했을 경우, 다음의 호출과 같은 결과를 얻을 수 있습니다.

dst.put(csq.subSequence(start, end). toString()) 

정의:
인터페이스 Appendable 내의 append
파라미터:
csq - 문자 서브 순서의 추가원이 되는 문자 순서. csqnull 의 경우,csqnull 의 4 문자가 포함되어 있는 것으로서 문자가 추가되는
start - 문자 서브 순서의 최초의 문자의 인덱스
end - 문자 서브 순서의 마지막 문자에 계속되는 문자의 인덱스
반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼내에 남아 있는 용량이 부족한 경우
IndexOutOfBoundsException - start 또는 end 가 0 보다 작은 값의 경우,startend 보다 큰 경우, 또는 endcsq.length() 보다 큰 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우
도입된 버젼:
1.5

append

public CharBuffer  append(char c)
지정된 문자를 이 버퍼에 추가합니다 (옵션).

이 메소드를 dst.append(c) 의 형식에서 호출했을 경우, 다음의 호출과 같은 결과를 얻을 수 있습니다.

dst.put(c) 

정의:
인터페이스 Appendable 내의 append
파라미터:
c - 추가하는 16 비트 문자
반환값:
현재의 버퍼
예외:
BufferOverflowException - 현재의 버퍼내에 남아 있는 용량이 부족한 경우
ReadOnlyBufferException - 현재의 버퍼가 읽어들여 전용 버퍼인 경우
도입된 버젼:
1.5

order

public abstract ByteOrder  order()
현재의 버퍼의 바이트 순서를 가져옵니다.

할당해 또는 기존의 char 배열의 랩에 의해 작성된 문자 버퍼의 바이트 순서는, 기본이 되는 하드웨어의 네이티브의 바이트 순서 와 같게 됩니다. byte 버퍼의로서 작성된 문자 버퍼의 바이트 순서는, 뷰를 작성한 시점의 byte 버퍼의 바이트 순서와 같게 됩니다.

반환값:
현재의 버퍼의 바이트 순서

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.