JavaTM 2
Platform
Std. Ed. v1.4.0

java.nio
クラス ByteBuffer

java.lang.Object
  |
  +--java.nio.Buffer
        |
        +--java.nio.ByteBuffer
すべての実装インタフェース:
Comparable
直系の既知のサブクラス:
MappedByteBuffer

public abstract class ByteBuffer
extends Buffer
implements Comparable

byte バッファです。

このクラスは、byte バッファに対する操作を次の 6 つのカテゴリに分類します。

byte バッファは、バッファの内容に容量を割り当てる方法 (容量の割り当て) か、既存の byte 配列をバッファにラップする方法 (ラップ) で作成できます。

ダイレクトバッファと非ダイレクトバッファ

byte バッファには、「ダイレクト」バッファと「非ダイレクト」バッファがあります。ダイレクト byte バッファの場合、Java 仮想マシンは、ネイティブの入出力操作を直接実行しようとします。これは、基本となるオペレーティングシステム固有の入出力操作を呼び出す際、中間バッファを介さないということです。

ダイレクト byte バッファは、このクラスのファクトリメソッド allocateDirect を呼び出すと作成されます。通常は、こちらのバッファのほうが、非ダイレクトバッファよりも割り当ておよび解放コストがやや高くなります。ダイレクトバッファの内容が標準のガベージコレクトされたヒープの外部にあるなら、アプリケーションのメモリフットプリントに対する影響はわずかです。このことから、ダイレクトバッファには、基本となるシステム固有の入出力操作に従属する、寿命が長く容量の大きいバッファを指定することをお勧めします。一般に、ダイレクトバッファの割り当ては、プログラムの性能を十分に改善できる見込みがある場合にのみ行うべきです。

ダイレクト byte バッファは、ファイルの一領域をダイレクトメモリにマップする方法 (マッピング) でも作成できます。Java プラットフォームの実装は、JNI を介してネイティブコードからダイレクト byte バッファを生成する機能をサポートしています。こうしたバッファのインスタンスがメモリ内のアクセスできない領域を参照している場合、その領域にアクセスしようとしても、アクセス時かそのあとで未指定の例外がスローされるだけで、バッファの内容は変更されません。

ダイレクト byte バッファであるかどうかは、isDirect メソッドを呼び出すことで判断できます。このメソッドを使用すれば、性能が重視されるコード内で明示的にバッファ管理を行うことができます。

バイナリデータへのアクセス

このクラスは、その他のすべてのプリミティブ型 (boolean を除く) の値の読み込みと書き込みを行うメソッドを定義します。プリミティブ値は、バッファの現在のバイト順序に従って、バイトシーケンスと相互変換されます。バッファ順序の取得および変更には、order メソッドを使用します。特定のバイト順序は、ByteOrder クラスのインスタンスで表されます。byte バッファの初期順序は常に BIG_ENDIAN です。

異種バイナリデータ、すなわち型の異なる値のシーケンスにアクセスできるようにするため、このクラスは、型ごとに絶対および相対 get / put メソッドのファミリを定義します。たとえば、32 ビットの浮動小数点数 (float 値) の場合、次のメソッドが定義されます。

 float  getFloat()
 float  getFloat(int index)
  void  putFloat(float f)
  void  putFloat(int index, float f)

charshortintlongdouble の各型にも、同様のメソッドが定義されます。絶対 get / put メソッドのインデックスパラメータは、読み込みまたは書き込みの対象となる型ではなく、バイトです。

同種のバイナリデータ、すなわち同じ型の値のシーケンスにアクセスできるようにするため、このクラスは、指定された byte バッファの「ビュー」を作成するメソッドを定義します。「ビューバッファ」の内容は、byte バッファを利用しています。byte バッファの内容に変更を加えると、ビューバッファにその内容が表示されます。反対に、ビューバッファの内容に変更を加えると、byte バッファにその内容が表示されます。この 2 つのバッファの位置、リミット、マークの値は、それぞれ独立しています。たとえば、asFloatBuffer メソッドは、このメソッドの呼び出し元 byte バッファを利用する FloatBuffer クラスのインスタンスを生成します。charshortintlongdouble の各型にも、同様のビュー作成メソッドが定義されています。

ビューバッファには、前述した型固有の「get」や「get」メソッドのファミリに勝る重要な利点が 3 つあります。

ビューの生成時、ビューバッファのバイト順序は byte バッファのバイト順序と同じになります。

呼び出しの連鎖

このクラスのメソッドのうち戻り値を返さないものは、自身を呼び出したバッファの情報を返します。これを応用して、メソッド呼び出しを連鎖させることができます。 たとえば、次のような連続した文があるとしましょう。

 bb.putInt(0xCAFEBABE);
 bb.putShort(3);
 bb.putShort(45);
これらは、次の一文で置き換えられます。
 bb.putInt(0xCAFEBABE).putShort(3).putShort(45);

導入されたバージョン:
1.4

メソッドの概要
static ByteBuffer allocate(int capacity)
          新しい byte バッファを割り当てます。
static ByteBuffer allocateDirect(int capacity)
          新しいダイレクト byte バッファを割り当てます。
 byte[] array()
          このバッファを補助する byte 配列を返します (任意操作)。
 int arrayOffset()
          このバッファの補助配列の最初の要素のオフセットを返します (任意操作)。
abstract  CharBuffer asCharBuffer()
          char バッファとしてこの byte バッファのビューを作成します。
abstract  DoubleBuffer asDoubleBuffer()
          double バッファとしてこの byte バッファのビューを作成します。
abstract  FloatBuffer asFloatBuffer()
          float バッファとしてこの byte バッファのビューを作成します。
abstract  IntBuffer asIntBuffer()
          int バッファとしてこの byte バッファのビューを作成します。
abstract  LongBuffer asLongBuffer()
          long バッファとしてこの byte バッファのビューを作成します。
abstract  ByteBuffer asReadOnlyBuffer()
          このバッファの内容を共有する新しい読み込み専用 byte バッファを作成します。
abstract  ShortBuffer asShortBuffer()
          short バッファとしてこの byte バッファのビューを作成します。
abstract  ByteBuffer compact()
          このバッファを圧縮します (任意操作)。
 int compareTo(Object ob)
          このバッファを別のオブジェクトと比較します。
abstract  ByteBuffer duplicate()
          このバッファの内容を共有する新しい byte バッファを作成します。
 boolean equals(Object ob)
          このバッファが別のオブジェクトと等価であるかどうかを判断します。
abstract  byte get()
          相対「get」メソッドです。
 ByteBuffer get(byte[] dst)
          相対「一括 get」メソッドです。
 ByteBuffer get(byte[] dst, int offset, int length)
          相対「一括 get」メソッドです。
abstract  byte get(int index)
          絶対「get」メソッドです。
abstract  char getChar()
          char 値を読み取る相対「get」メソッドです。
abstract  char getChar(int index)
          char 値を読み取る絶対「get」メソッドです。
abstract  double getDouble()
          double 値を読み取る相対「get」メソッドです。
abstract  double getDouble(int index)
          double 値を読み取る絶対「get」メソッドです。
abstract  float getFloat()
          float 値を読み取る相対「get」メソッドです。
abstract  float getFloat(int index)
          float 値を読み取る絶対「get」メソッドです。
abstract  int getInt()
          int 値を読み取る相対「get」メソッドです。
abstract  int getInt(int index)
          int 値を読み取る絶対「get」メソッドです。
abstract  long getLong()
          long 値を読み取る相対「get」メソッドです。
abstract  long getLong(int index)
          long 値を読み取る絶対「get」メソッドです。
abstract  short getShort()
          short 値を読み取る相対「get」メソッドです。
abstract  short getShort(int index)
          short 値を読み取る絶対「get」メソッドです。
 boolean hasArray()
          このバッファがアクセス可能な byte 配列を利用するかどうかを判断します。
 int hashCode()
          このバッファの現在のハッシュコードを返します。
abstract  boolean isDirect()
          このバッファがダイレクトバッファであるかどうかを判断します。
 ByteOrder order()
          このバッファのバイト順序を取得します。
 ByteBuffer order(ByteOrder bo)
          このバッファのバイト順序を変更します。
abstract  ByteBuffer put(byte b)
          相対「put」メソッドです (任意操作)。
 ByteBuffer put(byte[] src)
          相対一括「put」メソッドです (任意操作)。
 ByteBuffer put(byte[] src, int offset, int length)
          相対「一括 put」メソッドです (任意操作)。
 ByteBuffer put(ByteBuffer src)
          相対「一括 put」メソッドです (任意操作)。
abstract  ByteBuffer put(int index, byte b)
          絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putChar(char value)
          char 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putChar(int index, char value)
          char 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putDouble(double value)
          double 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putDouble(int index, double value)
          double 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putFloat(float value)
          float 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putFloat(int index, float value)
          float 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putInt(int value)
          int 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putInt(int index, int value)
          int 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putLong(int index, long value)
          long 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putLong(long value)
          long 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putShort(int index, short value)
          short 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putShort(short value)
          short 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer slice()
          このバッファの共有のサブシーケンスを内容とする新しい byte バッファを作成します。
 String toString()
          このバッファの状態を簡単に説明する文字列を返します。
static ByteBuffer wrap(byte[] array)
          byte 配列をバッファにラップします。
static ByteBuffer wrap(byte[] array, int offset, int length)
          byte 配列をバッファにラップします。
 
クラス 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
 

メソッドの詳細

allocateDirect

public static ByteBuffer allocateDirect(int capacity)
新しいダイレクト byte バッファを割り当てます。

新しいバッファの位置は 0、リミットは容量と同じ値になります。マークは定義されません。補助配列を利用するかどうかは未指定です。

パラメータ:
capacity - 新しいバッファの容量 (バイト)
戻り値:
新しい byte バッファ

allocate

public static ByteBuffer allocate(int capacity)
新しい byte バッファを割り当てます。

新しいバッファの位置は 0、リミットは容量と同じ値になります。マークは定義されません。このバッファは補助配列を利用することになっており、その配列オフセットは 0 です。

パラメータ:
capacity - 新しいバッファの容量 (バイト)
戻り値:
新しい byte バッファ

wrap

public static ByteBuffer wrap(byte[] array,
                              int offset,
                              int length)
byte 配列をバッファにラップします。

新しいバッファは指定された byte 配列によって指示されます。バッファに変更を加えると byte 配列が変更され、byte 配列に変更を加えるとバッファが変更されます。新しいバッファの容量は array.length、位置は offset、リミットは offset + length になります。マークは定義されません。指定された配列が補助配列となり、その{@link #arrayOffset 配列オフセットは 0 になります。

パラメータ:
array - 新しいバッファを補助する配列
offset - 使用するサブ配列の長さ。array.length 以下の正の数でなければならない。新しいバッファの位置は、この値に設定される
length - 使用するサブ配列の長さ。array.length - offset 以下の正の数でなければならない。新しいバッファのリミットは、offset + length に設定される
戻り値:
新しい byte バッファ
例外:
IndexOutOfBoundsException - offset パラメータと length パラメータの前提条件が満たされていない場合

wrap

public static ByteBuffer wrap(byte[] array)
byte 配列をバッファにラップします。

新しいバッファは指定された byte 配列によって指示されます。バッファに変更を加えると byte 配列が変更され、byte 配列に変更を加えるとバッファが変更されます。新しいバッファの容量とリミットは array.length、位置は 0 になります。マークは定義されません。指定された配列が補助配列となり、その配列オフセットは 0 になります。

パラメータ:
array - このバッファを補助する配列
戻り値:
新しい byte バッファ

slice

public abstract ByteBuffer slice()
このバッファの共有のサブシーケンスを内容とする新しい byte バッファを作成します。

新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの位置は 0、容量とリミットはこのバッファ内に残っているバイト数になります。マークは定義されません。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい byte バッファ

duplicate

public abstract ByteBuffer duplicate()
このバッファの内容を共有する新しい byte バッファを作成します。

新しいバッファの内容は、このバッファの内容と同じになります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの容量、リミット、位置、マークの値は、このバッファの対応する値と同じになります。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい byte バッファ

asReadOnlyBuffer

public abstract ByteBuffer asReadOnlyBuffer()
このバッファの内容を共有する新しい読み込み専用 byte バッファを作成します。

新しいバッファの内容は、このバッファの内容と同じになります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。しかし、新しいバッファ自体は読み込み専用であり、その共有の内容を変更することはできません。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの容量、リミット、位置、マークの値は、このバッファの対応する値と同じになります。

このバッファが読み込み専用の場合、このメソッドの動作はduplicate メソッドとまったく同じになります。

戻り値:
新しい読み込み専用 byte バッファ

get

public abstract byte get()
相対「get」メソッドです。このバッファの現在位置を読み込み、その位置の値を増加します。

戻り値:
バッファの現在位置のバイト
例外:
BufferUnderflowException - バッファの現在位置がリミット以上である場合

put

public abstract ByteBuffer put(byte b)
相対「put」メソッドです (任意操作)。

このバッファの現在位置に指定されたバイトを書き込み、その位置の値を増加します。

パラメータ:
b - 書き込まれるバイト
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファの現在位置がリミット以上である場合
ReadOnlyBufferException - このバッファが読み込み専用バッファである場合

get

public abstract byte get(int index)
絶対「get」メソッドです。指定されたインデックス位置のバイトを読み込みます。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置のバイト
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミット以上である場合

put

public abstract ByteBuffer put(int index,
                               byte b)
絶対「put」メソッドです (任意操作)。

このバッファのインデックス位置に指定されたバイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
b - 書き込まれるバイト値
戻り値:
このバッファ
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミット以上である場合
ReadOnlyBufferException - このバッファが読み込み専用バッファである場合

get

public ByteBuffer get(byte[] dst,
                      int offset,
                      int length)
相対「一括 get」メソッドです。

このメソッドは、このバッファから指定された配列にバイトを転送します。このバッファ内に残っているバイト数が要求に満たない場合 (length > remaining())、バイトは一切転送されず、BufferUnderflowException がスローされます。

それ以外の場合、このメソッドは、このバッファの現在位置から length バイトを指定された配列の指定されたオフセット位置へコピーします。そのたびに、このバッファの位置が length ずつ増加します。

このメソッドを src.get(dst, off, len) の形式で呼び出すと、以下のループとまったく同じ結果になります。

     for (int i = off; i < off + len; i++)
         dst[i] = src.get(); 
ただし、このバッファ内に十分な数の byte 数があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。

パラメータ:
dst - バイトの書き込み先となる配列
offset - 最初のバイトの書き込み先となる配列内のオフセット。dst.length 以下の正の数でなければならない
length - 指定された配列に書き込まれる最大バイト数。dst.length - offset 以下の正の数でなければならない
戻り値:
このバッファ
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が length よりも少ない場合
IndexOutOfBoundsException - offset パラメータと length パラメータの前提条件が満たされていない場合

get

public ByteBuffer get(byte[] dst)
相対「一括 get」メソッドです。

このメソッドは、このバッファから指定された配列へバイトを転送します。このメソッドを src.get(a) の形式で呼び出すと、以下の呼び出しと同じ結果になります。

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

戻り値:
このバッファ
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が length よりも少ない場合

put

public ByteBuffer put(ByteBuffer src)
相対「一括 put」メソッドです (任意操作)。

このメソッドは、指定されたソースバッファ内に残っているバイトをこのバッファへ転送します。ソースバッファ内に残っているバイト数がこのバッファ内に残っているバイト数よりも多い場合 (src.remaining() > remaining())、バイトは一切転送されず、BufferOverflowException がスローされます。

それ以外の場合、このメソッドは、指定されたバッファの現在位置からこのバッファの現在位置へ n = src.remaining() バイトをコピーします。そのたびに、両方のバッファの位置が n ずつ増加します。

このメソッドを dst.put(src) の形式で呼び出すと、以下のループとまったく同じ結果になります。

     while (src.hasRemaining())
         dst.put(src.get()); 
ただし、このバッファ内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。

パラメータ:
src - バイトが読み込まれるソースバッファ (このバッファ以外)
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファに、ソースバッファのバイトを格納できるだけの容量がない場合
IllegalArgumentException - ソースバッファとしてこのバッファを指定した場合
ReadOnlyBufferException - このバッファが読み込み専用バッファである場合

put

public ByteBuffer put(byte[] src,
                      int offset,
                      int length)
相対「一括 put」メソッドです (任意操作)。

このメソッドは、指定されたソース配列からこのバッファへバイトを転送します。配列からコピーするバイト数がこのバッファ内に残っているバイト数より多い場合 (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 - このバッファが読み込み専用バッファである場合

put

public final ByteBuffer put(byte[] src)
相対一括「put」メソッドです (任意操作)。

このメソッドは、ソースとなる指定された byte 配列の内容全体をこのバッファへ転送します。このメソッドを dst.put(a) の形式で呼び出すと、以下の呼び出しと同じ結果になります。

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

戻り値:
このバッファ
例外:
BufferOverflowException - このバッファ内に残っている容量が不足している場合
ReadOnlyBufferException - このバッファが読み込み専用バッファである場合

hasArray

public final boolean hasArray()
このバッファがアクセス可能な byte 配列を利用するかどうかを判断します。

このメソッドの戻り値が true であれば、array メソッドと arrayOffset メソッドを安全に呼び出すことができます。

戻り値:
このバッファが配列を利用しており、読み込み専用でない場合にかぎり true

array

public final byte[] array()
このバッファを補助する byte 配列を返します (任意操作)。

このバッファの内容に変更を加えると、返される配列の内容も変更されます。その逆も同様です。

このメソッドを呼び出す前に hasArray メソッドを呼び出し、このバッファがアクセス可能な補助配列を持っていることを確認します。

戻り値:
このバッファを補助する配列
例外:
ReadOnlyBufferException - このバッファが配列を利用し、しかも読み込み専用である場合
UnsupportedOperationException - このバッファがアクセス可能な配列を利用しない場合

arrayOffset

public final int arrayOffset()
このバッファの補助配列の最初の要素のオフセットを返します (任意操作)。

このバッファが配列によって補助されていれば、その位置 p が配列のインデックス p + arrayOffset() と一致します。

このメソッドを呼び出す前に hasArray メソッドを呼び出し、このバッファがアクセス可能な補助配列を持っていることを確認します。

戻り値:
このバッファの配列内の最初の要素のオフセット
例外:
ReadOnlyBufferException - このバッファが配列によって補助され、しかも読み込み専用である場合
UnsupportedOperationException - このバッファがアクセス可能な配列によって補助されない場合

compact

public abstract ByteBuffer compact()
このバッファを圧縮します (任意操作)。

バッファの現在位置からリミットまでの間にバイトが存在する場合、これらをバッファの先頭にコピーします。つまり、インデックス位置 p = position() のバイトがインデックス 0 にコピーされ、インデックス位置 p + 1 のバイトがインデックス 1 にコピーされるということです。インデックス位置 limit() - 1 のバイトがインデックス n = limit() - 1 - p にコピーされるまで、同様の処理が繰り返されます。最終的にバッファの位置は n に設定され、リミットは容量の値と等しくなります。マークは破棄されます。

バッファの位置は、0 ではなく、コピーされるバイト数と等しくなります。したがって、このメソッドを呼び出したあと、すぐに別の相対「put」メソッドを呼び出すことができます。

このメソッドは、書き込みが終了しなかった場合にバッファからのデータの書き込みを実行する前に呼び出します。以下のループは、バッファ buf を使って、あるチャネルから別のチャネルにバイトをコピーします。

 buf.clear();          // Prepare buffer for use
 for (;;) {
     if (in.read(buf) < 0 && !buf.hasRemaining())
         break;        // No more bytes to transfer
     buf.flip();
     out.write(buf);
     buf.compact();    // In case of partial write
 }

戻り値:
このバッファ
例外:
ReadOnlyBufferException - このバッファが読み込み専用バッファである場合

isDirect

public abstract boolean isDirect()
このバッファがダイレクトバッファであるかどうかを判断します。

戻り値:
このバッファがダイレクトバッファである場合にかぎり true

toString

public String toString()
このバッファの状態を簡単に説明する文字列を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
概要文字列

hashCode

public int hashCode()
このバッファの現在のハッシュコードを返します。

byte バッファのハッシュコードは、バッファ内に残っている残りの要素、すなわち position()limit() - 1 の要素だけに依存します。

バッファのハッシュコードは内容依存型です。今後バッファの内容が変更されないことが明らかでないかぎり、バッファをハッシュマップその他のデータ構造のキーとして使用することは避けてください。

オーバーライド:
クラス Object 内の hashCode
戻り値:
このバッファの現在のハッシュコード
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object ob)
このバッファが別のオブジェクトと等価であるかどうかを判断します。

2 つの byte バッファは、次の場合にかぎり等価です。

  1. 要素の型が同じである

  2. バッファ内に残っている要素数が同じである

  3. バッファ内に残っている要素のシーケンス (開始位置とは無関係) が各点で等しい

byte バッファが、その他の型のオブジェクトと等価になることはありません。

オーバーライド:
クラス Object 内の equals
パラメータ:
ob - このバッファと比較するオブジェクト
戻り値:
このバッファが指定されたオブジェクトと等価である場合にかぎり true
関連項目:
Object.hashCode(), Hashtable

compareTo

public int compareTo(Object ob)
このバッファを別のオブジェクトと比較します。

2 つの byte バッファを比較する際は、バッファ内に残っている要素のシーケンスが辞書順に比較されます。このとき、双方のバッファ内に残っているシーケンスの開始位置は考慮されません。

byte バッファをその他の型のオブジェクトと比較することはできません。

定義:
インタフェース Comparable 内の compareTo
パラメータ:
ob - 比較対象の Object
戻り値:
このバッファがもう一方のバッファより小さい場合は負の整数、等しい場合は 0、大きい場合は正の整数
例外:
ClassCastException - 引数が byte バッファではない場合

order

public final ByteOrder order()
このバッファのバイト順序を取得します。

バイト順序は、複数バイトの値を読み取るときや書き込むとき、そしてこの byte バッファのビューとなるバッファを作成するときに使用します。新しく作成された byte バッファの順序は常に BIG_ENDIAN になります。

戻り値:
このバッファのバイト順序

order

public final ByteBuffer order(ByteOrder bo)
このバッファのバイト順序を変更します。

パラメータ:
bo - 新しいバイト順序 BIG_ENDIAN または LITTLE_ENDIAN
戻り値:
このバッファ

getChar

public abstract char getChar()
char 値を読み取る相対「get」メソッドです。

このバッファの現在位置から 2 バイトを読み込み、現在のバイト順序に従って、これらを char 値に変換します。位置の値は、そのたびに 2 ずつ増加します。

戻り値:
バッファの現在位置の char 値
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が 2 バイトより少ない場合

putChar

public abstract ByteBuffer putChar(char value)
char 値を書き込む相対「put」メソッドです (任意操作)。

このバッファの現在位置に、現在のバイト順序に従って、指定された char 値を含む 2 バイトを書き込みます。位置の値は、そのたびに 2 ずつ増加します。

パラメータ:
value - 書き込まれる char 値
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファ内に残っているバイト数が 2 バイトより少ない場合

getChar

public abstract char getChar(int index)
char 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 2 バイトを読み込み、現在のバイト順序に従って、これらを char 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の char 値
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 1 を引いた値以上である場合

putChar

public abstract ByteBuffer putChar(int index,
                                   char value)
char 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファの指定されたインデックス位置に、現在のバイト順序に従って、指定された char 値を含む 2 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる char 値
戻り値:
このバッファ
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 1 を引いた値以上である場合

asCharBuffer

public abstract CharBuffer asCharBuffer()
char バッファとしてこの byte バッファのビューを作成します。

新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの位置は 0、容量とリミットはこのバッファ内に残っているバイト数の 1/2 になります。マークは定義されません。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい char バッファ

getShort

public abstract short getShort()
short 値を読み取る相対「get」メソッドです。

このバッファの現在位置から 2 バイトを読み込み、現在のバイト順序に従って、これらを short 値に変換します。位置の値は、そのたびに 2 ずつ増加します。

戻り値:
バッファの現在位置の short 値
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が 2 バイトより少ない場合

putShort

public abstract ByteBuffer putShort(short value)
short 値を書き込む相対「put」メソッドです (任意操作)。

このバッファの現在位置に、現在のバイト順序に従って、指定された short 値を含む 2 バイトを書き込みます。位置の値は、そのたびに 2 ずつ増加します。

パラメータ:
value - 書き込まれる short 値
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファ内に残っているバイト数が 2 バイトより少ない場合

getShort

public abstract short getShort(int index)
short 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 2 バイトを読み込み、現在のバイト順序に従って、これらを short 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の short 値
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 1 を引いた値以上である場合

putShort

public abstract ByteBuffer putShort(int index,
                                    short value)
short 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファの指定されたインデックス位置に、現在のバイト順序に従って、指定された short 値を含む 2 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる short 値
戻り値:
このバッファ
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 1 を引いた値以上である場合

asShortBuffer

public abstract ShortBuffer asShortBuffer()
short バッファとしてこの byte バッファのビューを作成します。

新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの位置は 0、容量とリミットはこのバッファ内に残っているバイト数の 1/2 になります。マークは定義されません。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい short バッファ

getInt

public abstract int getInt()
int 値を読み取る相対「get」メソッドです。

このバッファの現在位置から 4 バイトを読み込み、現在のバイト順序に従って、これらを int 値に変換します。位置の値は、そのたびに 4 ずつ増加します。

戻り値:
バッファの現在位置の int 値
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が 4 バイトより少ない場合

putInt

public abstract ByteBuffer putInt(int value)
int 値を書き込む相対「put」メソッドです (任意操作)。

このバッファの現在位置に、現在のバイト順序に従って、指定された int 値を含む 4 バイトを書き込みます。位置の値は、そのたびに 4 ずつ増加します。

パラメータ:
value - 書き込まれる int 値
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファ内に残っているバイト数が 4 バイトより少ない場合

getInt

public abstract int getInt(int index)
int 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 4 バイトを読み込み、現在のバイト順序に従って、これらを int 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の int 値
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 3 を引いた値以上である場合

putInt

public abstract ByteBuffer putInt(int index,
                                  int value)
int 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファの指定されたインデックス位置に、現在のバイト順序に従って、指定された int 値を含む 4 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる int 値
戻り値:
このバッファ
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 3 を引いた値以上である場合

asIntBuffer

public abstract IntBuffer asIntBuffer()
int バッファとしてこの byte バッファのビューを作成します。

新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの位置は 0、容量とリミットはこのバッファ内に残っているバイト数の 1/4 になります。マークは定義されません。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい int バッファ

getLong

public abstract long getLong()
long 値を読み取る相対「get」メソッドです。

このバッファの現在位置から 8 バイトを読み込み、現在のバイト順序に従って、これらを long 値に変換します。位置の値は、そのたびに 8 ずつ増加します。

戻り値:
バッファの現在位置の long 値
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が 8 バイトより少ない場合

putLong

public abstract ByteBuffer putLong(long value)
long 値を書き込む相対「put」メソッドです (任意操作)。

このバッファの現在位置に、現在のバイト順序に従って、指定された long 値を含む 8 バイトを書き込みます。位置の値は、そのたびに 8 ずつ増加します。

パラメータ:
value - 書き込まれる long 値
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファ内に残っているバイト数が 8 バイトより少ない場合

getLong

public abstract long getLong(int index)
long 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 8 バイトを読み込み、現在のバイト順序に従って、これらを long 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の long 値
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 7 を引いた値以上である場合

putLong

public abstract ByteBuffer putLong(int index,
                                   long value)
long 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファの指定されたインデックス位置に、現在のバイト順序に従って、指定された long 値を含む 8 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる long 値
戻り値:
このバッファ
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 7 を引いた値以上である場合

asLongBuffer

public abstract LongBuffer asLongBuffer()
long バッファとしてこの byte バッファのビューを作成します。

新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの位置は 0、容量とリミットはこのバッファ内に残っているバイト数の 1/8 になります。マークは定義されません。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい long バッファ

getFloat

public abstract float getFloat()
float 値を読み取る相対「get」メソッドです。

このバッファの現在位置から 4 バイトを読み込み、現在のバイト順序に従って、これらを float 値に変換します。位置の値は、そのたびに 4 ずつ増加します。

戻り値:
バッファの現在位置の float 値
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が 4 バイトより少ない場合

putFloat

public abstract ByteBuffer putFloat(float value)
float 値を書き込む相対「put」メソッドです (任意操作)。

このバッファの現在位置に、現在のバイト順序に従って、指定された float 値を含む 4 バイトを書き込みます。位置の値は、そのたびに 4 ずつ増加します。

パラメータ:
value - 書き込まれる float 値
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファ内に残っているバイト数が 4 バイトより少ない場合

getFloat

public abstract float getFloat(int index)
float 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 4 バイトを読み込み、現在のバイト順序に従って、これらを float 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の float 値
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 3 を引いた値以上である場合

putFloat

public abstract ByteBuffer putFloat(int index,
                                    float value)
float 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファの指定されたインデックス位置に、現在のバイト順序に従って、指定された float 値を含む 4 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる float 値
戻り値:
このバッファ
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 3 を引いた値以上である場合

asFloatBuffer

public abstract FloatBuffer asFloatBuffer()
float バッファとしてこの byte バッファのビューを作成します。

新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの位置は 0、容量とリミットはこのバッファ内に残っているバイト数の 1/4 になります。マークは定義されません。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい float バッファ

getDouble

public abstract double getDouble()
double 値を読み取る相対「get」メソッドです。

このバッファの現在位置から 8 バイトを読み込み、現在のバイト順序に従って、これらを double 値に変換します。位置の値は、そのたびに 8 ずつ増加します。

戻り値:
バッファの現在位置の double 値
例外:
BufferUnderflowException - このバッファ内に残っているバイト数が 8 バイトより少ない場合

putDouble

public abstract ByteBuffer putDouble(double value)
double 値を書き込む相対「put」メソッドです (任意操作)。

このバッファの現在位置に、現在のバイト順序に従って、指定された double 値を含む 8 バイトを書き込みます。位置の値は、そのたびに 8 ずつ増加します。

パラメータ:
value - 書き込まれる double 値
戻り値:
このバッファ
例外:
BufferOverflowException - このバッファ内に残っているバイト数が 8 バイトより少ない場合

getDouble

public abstract double getDouble(int index)
double 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 8 バイトを読み込み、現在のバイト順序に従って、これらを double 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の double 値
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 7 を引いた値以上である場合

putDouble

public abstract ByteBuffer putDouble(int index,
                                     double value)
double 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファの指定されたインデックス位置に、現在のバイト順序に従って、指定された double 値を含む 8 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる double 値
戻り値:
このバッファ
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファのリミットから 7 を引いた値以上である場合

asDoubleBuffer

public abstract DoubleBuffer asDoubleBuffer()
double バッファとしてこの byte バッファのビューを作成します。

新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。逆の場合も同じです。2 つのバッファの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファの位置は 0、容量とリミットはこのバッファ内に残っているバイト数の 1/8 になります。マークは定義されません。新しいバッファは、このバッファがダイレクトバッファである場合にかぎりダイレクトバッファになります。また、このバッファが読み込み専用バッファである場合にかぎり読み込み専用バッファになります。

戻り値:
新しい double バッファ

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

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.