|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.nio.Buffer | +--java.nio.CharBuffer
char バッファです。
このクラスは、char バッファに対する操作を 4 つのカテゴリに分類します。
連続した文字シーケンスを現在のバッファから配列へと転送する相対
メソッド「一括 get」
連続した文字シーケンスを char 配列、文字列、またはその他の char バッファから現在のバッファへと転送する相対
メソッド「一括 put」
char バッファは、バッファのコンテンツに容量を割り当てる方法 (
)、既存の char 配列や文字列をバッファにラップする方法 (容量の割り当て
)、既存の byte バッファの「ビュー」を作成する方法で作成できます。
ラップ
byte バッファと同様に、char バッファにも「ダイレクト」バッファと「非ダイレクト」バッファがあります。このクラスの wrap メソッドで作成された char バッファは非ダイレクトバッファになります。byte バッファのビューとして作成された char バッファは、byte バッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。char バッファがダイレクトバッファであるかどうかは、isDirect
メソッドを呼び出すことで判断できます。
このクラスは CharSequence
インタフェースを実装します。このため、文字シーケンスが受け付けられる場所であればどこでも、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 バッファを割り当てます。 |
char[] |
array()
現在のバッファを補助する char 配列を返します (オプション)。 |
int |
arrayOffset()
現在のバッファの補助配列内にある、このバッファの最初の要素のオフセットを返します (オプション)。 |
abstract CharBuffer |
asReadOnlyBuffer()
現在のバッファのコンテンツを共有する新しい読み込み専用文字列バッファを作成します。 |
char |
charAt(int index)
現在位置からの相対位置で表される指定されたインデックス位置にある文字を読み込みます。 |
abstract CharBuffer |
compact()
現在のバッファを圧縮します (オプション)。 |
int |
compareTo(Object ob)
現在のバッファを別のオブジェクトと比較します。 |
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()
現在のバッファがダイレクトバッファであるかどうかを判断します。 |
int |
length()
現在の char バッファのバッファ長を返します。 |
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」メソッドです (オプション)。 |
abstract CharBuffer |
slice()
現在のバッファのコンテンツの共有のサブシーケンスをコンテンツとする新しい char バッファを作成します。 |
abstract CharSequence |
subSequence(int start,
int end)
現在のバッファの指定されたサブシーケンス (現在位置からの相対位置) を表す新しい char バッファを作成します。 |
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 |
メソッドの詳細 |
public static CharBuffer allocate(int capacity)
新しいバッファの位置は 0、リミットは容量と同じ値になります。マークは定義されません。このバッファは
を利用することになっており、その補助配列
は 0 です。
配列オフセット
capacity
- 新しいバッファの容量 (文字数)
public static CharBuffer wrap(char[] array, int offset, int length)
新しいバッファは指定された char 配列を利用します。バッファに変更を加えると char 配列が変更され、char 配列に変更を加えるとバッファが変更されます。新しいバッファの容量は array.length、位置は offset、リミットは offset + length になります。マークは定義されません。指定された配列が
となり、その{@link #arrayOffset 配列オフセット補助配列
は 0 になります。
array
- 新しいバッファを補助する配列offset
- 使用するサブ配列のオフセット。array.length 以下の正の数でなければならない。新しいバッファの位置は、この値に設定されるlength
- 使用するサブ配列のオフセット。array.length - offset 以下の正の数でなければならない。新しいバッファのリミットは、offset + length に設定される
IndexOutOfBoundsException
- offset パラメータと length パラメータの前提条件が満たされていない場合public static CharBuffer wrap(char[] array)
新しいバッファは指定された char 配列を利用します。バッファに変更を加えると char 配列が変更され、char 配列に変更を加えるとバッファが変更されます。新しいバッファの容量とリミットは array.length、位置は 0 になります。マークは定義されません。指定された配列が
となり、その{@link #arrayOffset 配列オフセット補助配列
は 0 になります。
array
- 現在のバッファを補助する配列
public static CharBuffer wrap(CharSequence csq, int start, int end)
新しい読み込み専用バッファのコンテンツは、指定された文字シーケンスのコンテンツになります。バッファの容量は csq.length()、位置は start、リミットは end になります。マークは定義されません。
csq
- 作成される新しい char バッファの元になる文字シーケンスstart
- 使用される最初の文字を示すインデックス。csq.length() 以下の正の数でなければならない。新しいバッファの位置は、この値に設定されるend
- 使用される最後の文字の次の文字を示すインデックス。start 以上 csq.length() 以下の正の数でなければならない。新しいバッファのリミットは、この値に設定される
IndexOutOfBoundsException
- start パラメータと end パラメータの前提条件が満たされていない場合public static CharBuffer wrap(CharSequence csq)
新しい読み込み専用バッファのコンテンツは、指定された文字列のコンテンツになります。新しいバッファの容量とリミットは csq.length()、位置は 0 になります。マークは定義されません。
csq
- 作成される新しい char バッファの元になる文字シーケンス
public abstract CharBuffer slice()
新しいバッファのコンテンツは、現在のバッファの現在位置から始まります。現在のバッファのコンテンツに変更を加えると、その内容が新しいバッファに反映されます。新しいバッファのコンテンツに変更を加えると、その内容が現在のバッファに反映されます。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファの位置は 0、容量とリミットは現在のバッファ内に残っている文字数になります。マークは定義されません。新しいバッファは、現在のバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、現在のバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。
public abstract CharBuffer duplicate()
新しいバッファのコンテンツは、現在のバッファのコンテンツと同じになります。現在のバッファのコンテンツに変更を加えると、その内容が新しいバッファに反映されます。新しいバッファのコンテンツに変更を加えると、その内容が現在のバッファに反映されます。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファの容量、リミット、位置、マークの値は、現在のバッファの対応する値と同じになります。新しいバッファは、現在のバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、現在のバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。
public abstract CharBuffer asReadOnlyBuffer()
新しいバッファのコンテンツは、現在のバッファのコンテンツと同じになります。現在のバッファのコンテンツに変更を加えると、その内容が新しいバッファに反映されます。しかし、新しいバッファ自体は読み込み専用であり、その共有コンテンツを変更することはできません。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファの容量、リミット、位置、マークの値は、現在のバッファの対応する値と同じになります。
現在のバッファが読み込み専用の場合、このメソッドの動作は(duplicate)
メソッドとまったく同じになります。
public abstract char get()
BufferUnderflowException
- バッファの現在位置がリミット以上である場合public abstract CharBuffer put(char c)
現在のバッファの現在位置に指定された文字を書き込み、位置を増加します。
c
- 書き込まれる文字
BufferOverflowException
- 現在のバッファの現在位置がリミット以上である場合
ReadOnlyBufferException
- 現在のバッファが読み込み専用バッファである場合public abstract char get(int index)
index
- 文字の読み込み位置を示すインデックス
IndexOutOfBoundsException
- index が負の数である場合、またはバッファのリミット以上である場合public abstract CharBuffer put(int index, char c)
現在のバッファの指定されたインデックス位置に指定された文字を書き込みます。
index
- 文字の書き込み先を示すインデックスc
- 書き込まれる文字
IndexOutOfBoundsException
- index が負の数である場合、またはバッファのリミット以上である場合
ReadOnlyBufferException
- 現在のバッファが読み込み専用バッファである場合public CharBuffer get(char[] dst, int offset, int length)
このメソッドは、現在のバッファから指定された配列に文字を転送します。現在のバッファ内に残っている文字数が要求に満たない場合 (length > remaining())、文字は一切転送されず、BufferUnderflowException
がスローされます。
それ以外の場合、このメソッドは、現在のバッファの現在位置から length 文字を指定された配列の指定されたオフセット位置へコピーします。そのたびに、現在のバッファの位置が length ずつ増加します。
このメソッドを src.get(dst, off, len) の形式で呼び出すと、以下のループとまったく同じ結果になります。
for (int i = off; i < off + len; i++) dst[i] = src.get();ただし、現在のバッファ内に残っている文字数が十分であることを最初に確認する動作は、このメソッド固有です。また、このメソッドのほうがループよりも効率的です。
dst
- 文字の書き込み先となる配列offset
- 最後の文字の書き込み先となる配列内のオフセット。dst.length 以下の正の数でなければならないlength
- 指定された配列に書き込まれる最大文字数。dst.length - offset 以下の正の数でなければならない
BufferUnderflowException
- 現在のバッファ内に残っている文字数が length よりも少ない場合
IndexOutOfBoundsException
- offset パラメータと length パラメータの前提条件が満たされていない場合public CharBuffer get(char[] dst)
このメソッドは、現在のバッファから指定された配列へ文字を転送します。このメソッドを src.get(a) の形式で呼び出すと、以下の呼び出しと同じ結果になります。
src.get(a, 0, a.length)
BufferUnderflowException
- 現在のバッファ内に残っている文字数が length よりも少ない場合public CharBuffer put(CharBuffer src)
このメソッドは、指定されたソースバッファ内に残っている文字を現在のバッファへ転送します。ソースバッファ内に残っている文字数が現在のバッファ内に残っている文字数よりも多い場合 (src.remaining() > remaining())、文字は一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定されたバッファの現在位置から現在のバッファの現在位置へ n = src.remaining() 文字をコピーします。そのたびに、両方のバッファの位置が n ずつ増加します。
このメソッドを dst.put(src) の形式で呼び出すと、以下のループとまったく同じ結果になります。
while (src.hasRemaining()) dst.put(src.get());ただし、現在のバッファ内に十分な容量があることを最初に確認する動作は、このメソッドに固有です。また、このメソッドのほうがループよりもずっと効率的です。
src
- 文字が読み込まれるソースバッファ (現在のバッファ以外)
BufferOverflowException
- 現在のバッファに、ソースバッファの文字を格納できるだけの容量がない場合
IllegalArgumentException
- ソースバッファとして現在のバッファを指定した場合
ReadOnlyBufferException
- 現在のバッファが読み込み専用バッファである場合public CharBuffer put(char[] src, int offset, int length)
このメソッドは、指定されたソース配列から現在のバッファへ文字を転送します。配列からコピーする文字数が現在のバッファ内に残っている文字数より多い場合 (length > remaining())、文字は一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定された配列の指定されたオフセット位置から現在のバッファの現在位置へ length 文字をコピーします。そのたびに、現在のバッファの位置が length ずつ増加します。
このメソッドを dst.put(src, off, len) の形式で呼び出すと、以下のループとまったく同じ結果になります。
for (int i = off; i < off + len; i++) dst.put(a[i]);ただし、現在のバッファ内に十分な容量があることを最初に確認する動作は、このメソッドに固有です。また、このメソッドのほうがループよりもずっと効率的です。
offset
- 最初の文字が読み込まれる配列内のオフセット。array.length 以下の正の数でなければならないlength
- 指定された配列から読み取られる文字数。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)
このメソッドは、指定された文字列から現在のバッファへ文字を転送します。文字列からコピーする文字数が現在のバッファ内に残っている文字数より多い場合 (end - start > remaining())、文字は一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定された文字列の start インデックスから現在のバッファの現在位置へ n = end - start 文字をコピーします。そのたびに、現在のバッファの位置が n ずつ増加します。
このメソッドを dst.put(src, start, end) の形式で呼び出すと、以下のループとまったく同じ結果になります。
for (int i = start; i < end; i++) dst.put(src.charAt(i));ただし、現在のバッファ内に十分な容量があることを最初に確認する動作は、このメソッドに固有です。また、このメソッドのほうがループよりもずっと効率的です。
start
- 最初の文字が読み込まれる文字列内のオフセット。string.length 以下の正の数でなければならないend
- 最初の文字が読み込まれる文字列内のオフセット + 1。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
メソッドを呼び出し、現在のバッファがアクセス可能な補助配列を持っていることを確認します。
ReadOnlyBufferException
- 現在のバッファが配列を利用し、しかも読み込み専用である場合
UnsupportedOperationException
- 現在のバッファがアクセス可能な配列を利用しない場合public final int arrayOffset()
現在のバッファが配列を利用していれば、その位置 p が配列のインデックス p + arrayOffset() と一致します。
このメソッドを呼び出す前に hasArray
メソッドを呼び出し、現在のバッファがアクセス可能な補助配列を持っていることを確認します。
ReadOnlyBufferException
- 現在のバッファが配列を利用し、しかも読み込み専用である場合
UnsupportedOperationException
- 現在のバッファがアクセス可能な配列を利用しない場合public abstract CharBuffer compact()
バッファの現在位置からリミットまでの間に文字が存在する場合、これらをバッファの先頭にコピーします。つまり、インデックス位置 p = position() の文字がインデックス 0 にコピーされ、インデックス位置 p + 1 の文字がインデックス 1 にコピーされるということです。インデックス位置 limit() - 1 の文字がインデックス n = limit() - 1 - p にコピーされるまで、同様の処理が繰り返されます。最終的にバッファの位置は n に設定され、リミットは容量の値と等しくなります。マークは破棄されます。
バッファの位置は、0 ではなく、コピーされる文字数と等しくなります。したがって、このメソッドを呼び出したあと、すぐに別の相対「put」メソッドを呼び出すことができます。
ReadOnlyBufferException
- 現在のバッファが読み込み専用バッファである場合public abstract boolean isDirect()
public int hashCode()
char バッファのハッシュコードは、バッファ内に残っている要素、すなわち position() 〜 limit() - 1 の要素だけに依存します。
バッファのハッシュコードはコンテンツ依存型です。今後バッファのコンテンツが変更されないことが明らかでないかぎり、バッファをハッシュマップその他のデータ構造のキーとして使用することは避けてください。
Object
内の hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object ob)
2 つの char バッファは、次の場合にかぎり等価です。
要素の型が同じである
残りの要素数が同じである
残りの要素のシーケンス (開始位置とは無関係) が各点で等しい
char バッファが、その他の型のオブジェクトと等価になることはありません。
Object
内の equals
ob
- 現在のバッファと比較するオブジェクト
Object.hashCode()
,
Hashtable
public int compareTo(Object ob)
2 つの char バッファを比較する際は、残りの要素のシーケンスが辞書順に比較されます。このとき、双方のバッファ内に残っている各シーケンスの開始位置は考慮されません。
char バッファとその他の型のオブジェクトを比較することはできません。
Comparable
内の compareTo
ob
- 比較対象の Object
ClassCastException
- 引数が char バッファではない場合public String toString()
返される文字列の最初の文字は、現在のバッファの現在位置にある文字になります。また、返される文字列の最後の文字は、インデックス位置 limit() - 1 にある文字列になります。このメソッドを呼び出しても、バッファの現在位置は変わりません。
CharSequence
内の toString
Object
内の toString
public final int length()
文字シーケンスとして見た場合、char バッファのバッファ長 (文字数) は、位置の値以上、リミットの値より小さい値になります。この値は remaining() と等価です。
CharSequence
内の length
public final char charAt(int index)
CharSequence
内の charAt
index
- 読み取られる文字のインデックスは現在位置からの相対位置で表される。この値は remaining() 以下の正の数でなければならない
IndexOutOfBoundsException
- index の前提条件が満たされていない場合public abstract CharSequence subSequence(int start, int end)
新しいバッファは、現在のバッファのコンテンツを共有します。つまり、現在のバッファのコンテンツが変更可能である場合、一方のバッファに変更を加えるともう一方のバッファも変更されます。新しいバッファの容量は現在のバッファの容量と同じになります。新しいバッファの位置は position() + start、リミットは position() + end になります。新しいバッファは、現在のバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、現在のバッファが読み込み専用である場合にかぎり読み込み専用バッファになります。
CharSequence
内の subSequence
start
- サブシーケンス内の最初の文字を示すインデックス (現在位置からの相対位置)。remaining() 以下の正の数でなければならないend
- サブシーケンス内の最後の文字を示すインデックス (現在位置からの相対位置)。start 以上 remaining() 以下の値でなければならない
IndexOutOfBoundsException
- start パラメータと end パラメータの前提条件が満たされていない場合public abstract ByteOrder order()
既存の char 配列の割り当てまたはラップによって作成された char バッファのバイト順序は、基準となるハードウェアの
と同じになります。byte バッファの ビューとして作成された char バッファのバイト順序は、ビューを作成した時点の byte バッファのバイト順序と同じになります。ネイティブのバイト順序
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.