public abstract class CharBuffer extends Buffer implements Comparable<CharBuffer>, Appendable, CharSequence, Readable
このクラスは、char バッファーに対する操作を 4 つのカテゴリに分類します。
連続した char シーケンスをこのバッファーから配列へと転送する相対一括 get
メソッド。
連続した char シーケンスを char 配列、文字列、またはその他の char バッファーからこのバッファーへと転送する相対一括 put
メソッド。
char バッファーを作成するには、バッファーの内容に容量を割り当てる割り当て
を実行するか、
既存の char 配列や文字列をバッファー内に
ラップ
するか、既存の byte バッファーのビューを作成します。
byte バッファーと同様に、char バッファーにも「ダイレクト」バッファーと「非ダイレクト」バッファーがあります。このクラスの wrap メソッドで作成された char バッファーは非ダイレクトバッファーになります。byte バッファーのビューとして作成された char バッファーは、byte バッファーがダイレクトバッファーである場合にかぎりダイレクトバッファーになります。char バッファーがダイレクトバッファーかどうかは、isDirect
メソッドの呼び出しによって判断できます。
このクラスは CharSequence
インタフェースを実装しています。このため、char シーケンスが受け付けられる場所であればどこでも、char バッファーを使用できます。たとえば、正規表現のパッケージ java.util.regex
での使用が可能です。
このクラスのメソッドのうち戻り値を返さないものは、自身を呼び出したバッファーの情報を返します。これを応用して、メソッド呼び出しを連鎖させることができます。 たとえば、次のような連続した文があるとしましょう。
これらは、次の一文で置き換えられます。cb.put("text/"); cb.put(subtype); cb.put("; charset="); cb.put(enc);
cb.put("text/").put(subtype).put("; charset=").put(enc);
修飾子と型 | メソッドと説明 |
---|---|
static CharBuffer |
allocate(int capacity)
新しい char バッファーを割り当てます。
|
CharBuffer |
append(char c)
指定された char をこのバッファーに追加します (オプションの操作)。
|
CharBuffer |
append(CharSequence csq)
指定された char シーケンスをこのバッファーに追加します (オプションの操作)。
|
CharBuffer |
append(CharSequence csq, int start, int end)
指定された char シーケンスのサブシーケンスをこのバッファーに追加します (オプションの操作)。
|
char[] |
array()
このバッファーを補助する char 配列を返します (オプションの操作)。
|
int |
arrayOffset()
このバッファーの補助配列内にある、このバッファーの最初の要素のオフセットを返します (オプションの操作)。
|
abstract CharBuffer |
asReadOnlyBuffer()
このバッファーの内容を共有する新しい読み込み専用 char バッファーを作成します。
|
char |
charAt(int index)
現在位置からの相対位置として指定されたインデックス位置にある char を読み込みます。
|
abstract CharBuffer |
compact()
このバッファーを圧縮します (オプションの操作)。
|
int |
compareTo(CharBuffer that)
このバッファーを別のバッファーと比較します。
|
abstract CharBuffer |
duplicate()
このバッファーの内容を共有する新しい char バッファーを作成します。
|
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()
この char バッファーがダイレクトバッファーであるかどうかを判断します。
|
int |
length()
この char バッファーのバッファー長を返します。
|
abstract ByteOrder |
order()
このバッファーの byte 順序を取得します。
|
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)
指定された char バッファーに char を読み込みます。
|
abstract CharBuffer |
slice()
このバッファーの内容の共有のサブシーケンスを内容とする新しい char バッファーを作成します。
|
abstract CharBuffer |
subSequence(int start, int end)
このバッファーの指定されたサブシーケンス (現在位置からの相対位置) を表す新しい char バッファーを作成します。
|
String |
toString()
このバッファー内に残っている char を含む文字列を返します。
|
static CharBuffer |
wrap(char[] array)
char 配列をバッファーにラップします。
|
static CharBuffer |
wrap(char[] array, int offset, int length)
char 配列をバッファーにラップします。
|
static CharBuffer |
wrap(CharSequence csq)
char シーケンスをバッファーにラップします。
|
static CharBuffer |
wrap(CharSequence csq, int start, int end)
char シーケンスをバッファーにラップします。
|
public static CharBuffer allocate(int capacity)
新しいバッファーの位置はゼロ、リミットは容量と同じ値になり、マークは定義されず、各要素はゼロに初期化されます。補助配列
を持ち、
配列オフセット
はゼロになります。
capacity
- 新しいバッファーの容量 (char)IllegalArgumentException
- capacity が負の整数である場合public static CharBuffer wrap(char[] array, int offset, int length)
新しいバッファーは指定された char 配列によって補助されます。バッファーに変更を加えると配列も変更され、配列に変更を加えるとバッファーも変更されます。新しいバッファーの容量は array.length、位置は offset、リミットは offset + length になり、マークは定義されません。指定された配列が補助配列
となり、その
配列オフセット
はゼロになります。
array
- 新しいバッファーを補助する配列offset
-使用するサブ配列のオフセット。array.length 以下の負でない値でなければならない。新しいバッファーの位置は、この値に設定される。length
- 使用するサブ配列の長さ。array.length - offset 以下の負でない値でなければならない。新しいバッファーのリミットは、offset + length に設定される。IndexOutOfBoundsException
- offset パラメータと length パラメータの前提条件が満たされていない場合public static CharBuffer wrap(char[] array)
新しいバッファーは指定された char 配列によって補助されます。バッファーに変更を加えると配列も変更され、配列に変更を加えるとバッファーも変更されます。新しいバッファーの容量とリミットは array.length、位置はゼロになり、マークは定義されません。指定された配列が補助配列
となり、その
配列オフセット
はゼロになります。
array
- このバッファーを補助する配列public int read(CharBuffer target) throws IOException
read
、インタフェース: Readable
target
- char を読み込むバッファーIOException
- 入出力エラーが発生した場合NullPointerException
- target が null の場合ReadOnlyBufferException
- target が読み取り専用バッファーの場合public static CharBuffer wrap(CharSequence csq, int start, int end)
新しい読み取り専用バッファーの内容は、指定された char シーケンスの内容になります。新しいバッファーの容量は csq.length()、位置は start、リミットは end になり、マークは定義されません。
csq
- 作成される新しい char バッファーの元になる char シーケンスstart
- 使用される最初の char を示すインデックス。csq.length() 以下の負でない値でなければならない。新しいバッファーの位置は、この値に設定される。end
- 使用される最後の char のあとに続く char を示すインデックス。start 以上、csq.length() 以下の値でなければならない。新しいバッファーのリミットは、この値に設定される。IndexOutOfBoundsException
- start パラメータと end パラメータの前提条件が満たされていない場合public static CharBuffer wrap(CharSequence csq)
新しい読み取り専用バッファーの内容は、指定された char シーケンスの内容になります。新しいバッファーの容量とリミットは csq.length()、位置はゼロになり、マークは定義されません。
csq
- 作成される新しい char バッファーの元になる char シーケンスpublic abstract CharBuffer slice()
新しいバッファーの内容は、このバッファーの現在位置から始まります。このバッファーの内容に変更を加えると、その内容が新しいバッファーに反映されます。新しいバッファーの内容に変更を加えると、その内容がこのバッファーに反映されます。2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファーの位置はゼロ、容量とリミットはこのバッファー内に残っている char 数になります。マークは定義されません。新しいバッファーは、このバッファーがダイレクトバッファーである場合にかぎりダイレクトバッファーになります。また、このバッファーが読み取り専用バッファーである場合にかぎり読み取り専用バッファーになります。
public abstract CharBuffer duplicate()
新しいバッファーの内容は、このバッファーの内容と同じになります。このバッファーの内容に変更を加えると、その内容が新しいバッファーに反映されます。新しいバッファーの内容に変更を加えると、その内容がこのバッファーに反映されます。2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファーの容量、リミット、位置、マークの値は、このバッファーの対応する値と同じになります。新しいバッファーは、このバッファーがダイレクトバッファーである場合にかぎりダイレクトバッファーになります。また、このバッファーが読み取り専用バッファーである場合にかぎり読み取り専用バッファーになります。
public abstract CharBuffer asReadOnlyBuffer()
新しいバッファーの内容は、このバッファーの内容と同じになります。このバッファーの内容に変更を加えると、その内容が新しいバッファーに反映されます。しかし、新しいバッファー自体は読み取り専用であり、その共有内容を変更することはできません。2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファーの容量、リミット、位置、マークの値は、このバッファーの対応する値と同じになります。
このバッファー自身が読み込み専用の場合は、このメソッドは duplicate
と同じように動作します。
public abstract char get()
BufferUnderflowException
- バッファーの現在位置がリミット以上である場合public abstract CharBuffer put(char c)
バッファーの現在位置に指定された char を書き込み、現在位置の値を増加します。
c
- 書き込まれる char BufferOverflowException
- このバッファーの現在位置がリミット以上である場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public abstract char get(int index)
index
- char の読み込み位置を示すインデックスIndexOutOfBoundsException
- index が負の数である場合、またはバッファーのリミット以上である場合public abstract CharBuffer put(int index, char c)
このバッファーの指定されたインデックス位置に指定された char を書き込みます。
index
- char の書き込み先を示すインデックスc
- 書き込まれる char 値IndexOutOfBoundsException
- index が負の数である場合、またはバッファーのリミット以上である場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public CharBuffer get(char[] dst, int offset, int length)
このメソッドは、このバッファーから指定された配列へ char を転送します。このバッファー内に残っている char 数が要求に満たない場合 (つまり、length > remaining() である場合)、char は一切転送されず、BufferUnderflowException
がスローされます。
それ以外の場合、このメソッドは、length 個の char を、このバッファーの現在位置から指定された配列の指定されたオフセット位置へコピーします。そのたびに、このバッファーの位置が length ずつ増加します。
このメソッドを src.get(dst, off, len) の形式で呼び出すと、次のループとまったく同じ結果になります。
for (int i = off; i < off + len; i++) dst[i] = src.get();ただし、このバッファー内に十分な数の char 数があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。
dst
- char の書き込み先となる配列offset
- 最初の char の書き込み先となる配列内のオフセット。dst.length 以下の負でない値でなければならないlength
- 指定された配列に書き込まれる最大 char 数。dst.length - offset 以下の負でない値でなければならないBufferUnderflowException
- このバッファー内に残っている char 数が length よりも少ない場合IndexOutOfBoundsException
- offset パラメータと length パラメータの前提条件が満たされていない場合public CharBuffer get(char[] dst)
このメソッドは、このバッファーから指定された配列へ char を転送します。このメソッドを src.get(a) の形式で呼び出すと、次の呼び出しと同じ結果になります。
src.get(a, 0, a.length)
BufferUnderflowException
- このバッファー内に残っている char 数が length よりも少ない場合public CharBuffer put(CharBuffer src)
このメソッドは、指定されたソースバッファー内に残っている char をこのバッファーへ転送します。ソースバッファー内に残っている char 数がこのバッファー内に残っている char 数よりも多い場合 (つまり、src.remaining() > remaining() である場合)、char は一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定されたバッファーの現在位置からこのバッファーの現在位置へ n = src.remaining() char をコピーします。そのたびに、両方のバッファーの位置が n ずつ増加します。
このメソッドを dst.put(src) の形式で呼び出すと、次のループとまったく同じ結果になります。
while (src.hasRemaining()) dst.put(src.get());ただし、このバッファー内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。
src
- char の読み込み先となるソースバッファー (このバッファー以外)BufferOverflowException
- このバッファーに、ソースバッファー内に残っている char を格納できるだけの容量がない場合IllegalArgumentException
- ソースバッファーとしてこのバッファーを指定した場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public CharBuffer put(char[] src, int offset, int length)
このメソッドは、指定されたソース配列からこのバッファーへ char を転送します。配列からコピーする char 数がこのバッファー内に残っている char 数より多い場合 (つまり、length > remaining() である場合)、char は一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定された配列の指定されたオフセット位置からこのバッファーの現在位置へ length 個の char をコピーします。そのたびに、このバッファーの位置が length ずつ増加します。
このメソッドを dst.put(src, off, len) の形式で呼び出すと、次のループとまったく同じ結果になります。
for (int i = off; i < off + len; i++) dst.put(a[i]);ただし、このバッファー内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。
src
- char の読み込み先となる配列offset
- 最初の char の読み込み先となる配列内のオフセット。array.length 以下の負でない値にする必要があるlength
- 指定された配列から読み取られる char 数。array.length - offset 以下の負でない値でなければならないBufferOverflowException
- このバッファー内に残っている容量が不足している場合IndexOutOfBoundsException
- offset パラメータと length パラメータの前提条件が満たされていない場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public final CharBuffer put(char[] src)
このメソッドは、ソースとなる指定された char 配列の内容全体をこのバッファーへ転送します。このメソッドを dst.put(a) の形式で呼び出すと、次の呼び出しと同じ結果になります。
dst.put(a, 0, a.length)
BufferOverflowException
- このバッファー内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public CharBuffer put(String src, int start, int end)
このメソッドは、指定された文字列からこのバッファーへ char を転送します。文字列からコピーする char 数がこのバッファー内に残っている char 数より多い場合 (つまり、end - start > remaining() である場合)、char は一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定された文字列の start インデックスからこのバッファーの現在位置へ n = end - start char をコピーします。そのたびに、このバッファーの位置が n ずつ増加します。
このメソッドを dst.put(src, start, end) の形式で呼び出すと、次のループとまったく同じ結果になります。
for (int i = start; i < end; i++) dst.put(src.charAt(i));ただし、このバッファー内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。
src
- 文字列の読み込み先となる配列start
- 最初の char の読み込み先となる文字列内のオフセット。string.length() 以下の負でない値にする必要があるend
- 最後の char の読み込み先となる文字列内のオフセット。string.length() 以下の負でない値にする必要があるBufferOverflowException
- このバッファー内に残っている容量が不足している場合IndexOutOfBoundsException
- start パラメータと end パラメータの前提条件が満たされていない場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public final CharBuffer put(String src)
このメソッドは、指定されたソース文字列の内容全体をこのバッファーへ転送します。このメソッドを dst.put(s) の形式で呼び出すと、次の呼び出しと同じ結果になります。
dst.put(s, 0, s.length())
BufferOverflowException
- このバッファー内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public final boolean hasArray()
このメソッドの戻り値が true であれば、array
および arrayOffset
メソッドを安全に呼び出すことができます。
public final char[] array()
このバッファーの内容に変更を加えると、返される配列の内容も変更されます。その逆も同様です。
このメソッドを呼び出す前に hasArray
メソッドを呼び出し、このバッファーがアクセス可能な補助配列を持っていることを確認します。
array
、クラス: Buffer
ReadOnlyBufferException
- このバッファーが配列に連動しており、しかも読み込み専用である場合UnsupportedOperationException
- このバッファーがアクセス可能な配列を利用しない場合public final int arrayOffset()
このバッファーが配列に連動していれば、その位置 p が配列のインデックス p + arrayOffset() と一致します。
このメソッドを呼び出す前に hasArray
メソッドを呼び出し、このバッファーがアクセス可能な補助配列を持っていることを確認します。
arrayOffset
、クラス: Buffer
ReadOnlyBufferException
- このバッファーが配列に連動しており、しかも読み込み専用である場合UnsupportedOperationException
- このバッファーがアクセス可能な配列を利用しない場合public abstract CharBuffer compact()
バッファーの現在位置からリミットまでの間に char が存在する場合、これらをバッファーの先頭にコピーします。つまり、インデックス位置 p = position() の char がインデックスゼロにコピーされ、インデックス位置 p + 1 の char がインデックス 1 にコピーされるということです。インデックス位置 limit() - 1 の char がインデックス n = limit() - 1 - p にコピーされるまで、同様の処理が繰り返されます。最終的にバッファーの位置は n+1 に設定され、リミットは容量の値と等しくなります。マークは破棄されます。
バッファーの位置は、ゼロではなく、コピーされる char 数と等しくなります。したがって、このメソッドを呼び出したあと、すぐに別の相対「put」メソッドを呼び出すことができます。
ReadOnlyBufferException
- このバッファーが読み込み専用である場合public abstract boolean isDirect()
public int hashCode()
char バッファーのハッシュコードは、バッファー内に残っている要素、すなわち position() から limit() - 1 までの要素のみに依存します。
バッファーのハッシュコードは内容依存型です。今後バッファーの内容が変更されないことが明らかでないかぎり、バッファーをハッシュマップその他のデータ構造のキーとして使用することは避けてください。
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object ob)
2 つの char バッファーは、次の場合にかぎり等価です。
要素の型が同じである
バッファー内に残っている要素数が同じである
バッファー内に残っている要素のシーケンス (開始位置とは無関係) が各点で等しい (pointwise equal)
char バッファーが、その他の型のオブジェクトと等価になることはありません。
equals
、クラス: Object
ob
- このバッファーと比較するオブジェクトObject.hashCode()
、HashMap
public int compareTo(CharBuffer that)
2 つのchar バッファーを比較する際は、残りの要素のシーケンスが辞書順に比較されます。このとき、双方のバッファー内に残っている各シーケンスの開始位置は考慮されません。
Character.compare(char,char)
を呼び出したかのように、char
要素のペアが比較されます。
char バッファーとその他の型のオブジェクトを比較することはできません。
compareTo
、インタフェース: Comparable<CharBuffer>
that
- 比較対象のオブジェクト。public String toString()
また、結果として得られる文字列の最初の char はこのバッファーの位置にある char であるのに対して、最後の char はインデックス位置 limit() - 1 にある char になります。このメソッドを呼び出しても、バッファーの位置は変わりません。
toString
、インタフェース: CharSequence
toString
、クラス: Object
public final int length()
char シーケンスとして見た場合、char バッファーのバッファー長 (char 数) は、位置の値以上、リミットの値より小さい値になります。この値は remaining() と等価です。
length
、インタフェース: CharSequence
public final char charAt(int index)
charAt
、インタフェース: CharSequence
index
- 読み取られる char のインデックス (現在位置からの相対位置)。この値は remaining() 以下の負でない値でなければならないIndexOutOfBoundsException
- index の前提条件が満たされていない場合public abstract CharBuffer subSequence(int start, int end)
新しいバッファーは、このバッファーの内容を共有します。つまり、このバッファーの内容が変更可能である場合、一方のバッファーに変更を加えると他方のバッファーも変更されます。新しいバッファーの容量はこのバッファーの容量と同じになります。新しいバッファーの容量はこのバッファーの容量になり、その位置は position() + start、リミットは position() + end になります。新しいバッファーは、このバッファーがダイレクトバッファーである場合にかぎりダイレクトバッファーになります。また、このバッファーが読み取り専用バッファーである場合にかぎり読み取り専用バッファーになります。
subSequence
、インタフェース: CharSequence
start
- サブシーケンス内の最初の char を示すインデックス (現在位置からの相対位置)。remaining() 以下の負でない値でなければならないend
- サブシーケンス内の最後の char のあとに続く char を示すインデックス (現在位置からの相対位置)。start 以上 remaining() 以下の値でなければならないIndexOutOfBoundsException
- start と end の前提条件が満たされていない場合public CharBuffer append(CharSequence csq)
このメソッドを dst.append(csq) の形式で呼び出した場合、次の呼び出しとまったく同様に動作します。
dst.put(csq.toString())
char シーケンス csq に対する toString の指定に応じて、シーケンス全体が追加されないこともあります。たとえば、char バッファーの toString
メソッドを呼び出した場合、そのバッファーの位置とリミットによって決まる内容を持つサブシーケンスが返されます。
append
、インタフェース: Appendable
csq
- 追加する char シーケンス。csq が null の場合は、この char バッファーに「null」という 4 char が追加される。BufferOverflowException
- このバッファー内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public CharBuffer append(CharSequence csq, int start, int end)
csq が null でないときに、このメソッドを dst.append(csq, start, end) の形式で呼び出した場合、次の呼び出しとまったく同様に動作します。
dst.put(csq.subSequence(start, end).toString())
append
、インタフェース: Appendable
csq
- サブシーケンスの追加元の char シーケンス。csq が null の場合は、csq に「null」という 4 char が含まれているかのように char が追加されるstart
- サブシーケンスの最初の char のインデックスend
- サブシーケンスの最後の char のあとに続く char のインデックスBufferOverflowException
- このバッファー内に残っている容量が不足している場合IndexOutOfBoundsException
- start または end が負の値の場合、start が end よりも大きい場合、あるいは end が csq.length() よりも大きい場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合public CharBuffer append(char c)
このメソッドを dst.append(c) の形式で呼び出した場合、次の呼び出しとまったく同様に動作します。
dst.put(c)
append
、インタフェース: Appendable
c
- 追加する 16 ビット charBufferOverflowException
- このバッファー内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファーが読み込み専用である場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.