|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object![]()
![]()
![]()
java.nio.Buffer
![]()
![]()
![]()
java.nio.ByteBuffer
<ByteBuffer
>

public abstract class ByteBuffer

<ByteBuffer
>A byte buffer.
This class defines six categories of operations upon byte buffers:
Absolute and relative get
and
put
methods that read and write
single bytes;
Relative bulk get
methods that transfer contiguous sequences of bytes from this buffer
into an array;
Relative bulk put
methods that transfer contiguous sequences of bytes from a
byte array or some other byte
buffer into this buffer;
Absolute and relative get
and put
methods that read and
write values of other primitive types, translating them to and from
sequences of bytes in a particular byte order;
Methods for creating view buffers, which allow a byte buffer to be viewed as a buffer containing values of some other primitive type; and
Methods for compacting
, duplicating
, and slicing
a byte buffer.
Byte buffers can be created either by A byte buffer is either direct or non-direct. Given a
direct byte buffer, the Java virtual machine will make a best effort to
perform native I/O operations directly upon it. That is, it will attempt to
avoid copying the buffer's content to (or from) an intermediate buffer
before (or after) each invocation of one of the underlying operating
system's native I/O operations.
A direct byte buffer may be created by invoking the A direct byte buffer may also be created by Whether a byte buffer is direct or non-direct may be determined by
invoking its This class defines methods for reading and writing values of all other
primitive types, except boolean. Primitive values are translated
to (or from) sequences of bytes according to the buffer's current byte
order, which may be retrieved and modified via the For access to heterogeneous binary data, that is, sequences of values of
different types, this class defines a family of absolute and relative
get and put methods for each type. For 32-bit floating-point
values, for example, this class defines:
Corresponding methods are defined for the types char,
short, int, long, and double. The index
parameters of the absolute get and put methods are in terms of
bytes rather than of the type being read or written.
For access to homogeneous binary data, that is, sequences of values of
the same type, this class defines methods that can create views of a
given byte buffer. A view buffer is simply another buffer whose
content is backed by the byte buffer. Changes to the byte buffer's content
will be visible in the view buffer, and vice versa; the two buffers'
position, limit, and mark values are independent. The View buffers have three important advantages over the families of
type-specific get and put methods described above:
A view buffer is indexed not in terms of bytes but rather in terms
of the type-specific size of its values; A view buffer provides relative bulk get and put
methods that can transfer contiguous sequences of values between a buffer
and an array or some other buffer of the same type; and A view buffer is potentially much more efficient because it will
be direct if, and only if, its backing byte buffer is direct. The byte order of a view buffer is fixed to be that of its byte buffer
at the time that the view is created. Methods in this class that do not otherwise have a value to return are
specified to return the buffer upon which they are invoked. This allows
method invocations to be chained.
The sequence of statements
allocation
, which allocates space for the buffer's
content, or by wrapping
an
existing byte array into a buffer.
Direct vs. non-direct buffers
allocateDirect
factory method of this class. The
buffers returned by this method typically have somewhat higher allocation
and deallocation costs than non-direct buffers. The contents of direct
buffers may reside outside of the normal garbage-collected heap, and so
their impact upon the memory footprint of an application might not be
obvious. It is therefore recommended that direct buffers be allocated
primarily for large, long-lived buffers that are subject to the underlying
system's native I/O operations. In general it is best to allocate direct
buffers only when they yield a measureable gain in program performance.
mapping
a region of a file
directly into memory. An implementation of the Java platform may optionally
support the creation of direct byte buffers from native code via JNI. If an
instance of one of these kinds of buffers refers to an inaccessible region
of memory then an attempt to access that region will not change the buffer's
content and will cause an unspecified exception to be thrown either at the
time of the access or at some later time.
isDirect
method. This method is provided so
that explicit buffer management can be done in performance-critical code.
Access to binary data
order
methods. Specific byte orders are represented by instances of the ByteOrder
class. The initial order of a byte buffer is always BIG_ENDIAN
.
float
getFloat()
float getFloat(int index)
void putFloat(float f)
void putFloat(int index, float f)

asFloatBuffer
method, for example, creates an instance of
the FloatBuffer
class that is backed by the byte buffer upon which
the method is invoked. Corresponding view-creation methods are defined for
the types char, short, int, long, and
double.
Invocation chaining
can, for example, be replaced by the single statement
bb.putInt(0xCAFEBABE);
bb.putShort(3);
bb.putShort(45);
bb.putInt(0xCAFEBABE).putShort(3).putShort(45);
| Method Summary | |
|---|---|
static ByteBuffer |
allocate
Allocates a new byte buffer. |
static ByteBuffer |
allocateDirect
Allocates a new direct byte buffer. |
byte[] |
array
Returns the byte array that backs this buffer (optional operation). |
int |
arrayOffset
Returns the offset within this buffer's backing array of the first element of the buffer (optional operation). |
abstract CharBuffer |
asCharBuffer
Creates a view of this byte buffer as a char buffer. |
abstract DoubleBuffer |
asDoubleBuffer
Creates a view of this byte buffer as a double buffer. |
abstract FloatBuffer |
asFloatBuffer
Creates a view of this byte buffer as a float buffer. |
abstract IntBuffer |
asIntBuffer
Creates a view of this byte buffer as an int buffer. |
abstract LongBuffer |
asLongBuffer
Creates a view of this byte buffer as a long buffer. |
abstract ByteBuffer |
asReadOnlyBuffer
Creates a new, read-only byte buffer that shares this buffer's content. |
abstract ShortBuffer |
asShortBuffer
Creates a view of this byte buffer as a short buffer. |
abstract ByteBuffer |
compact
Compacts this buffer (optional operation). |
int |
compareTo
Compares this buffer to another. |
abstract ByteBuffer |
duplicate
Creates a new byte buffer that shares this buffer's content. |
boolean |
equals
Tells whether or not this buffer is equal to another object. |
abstract byte |
get
Relative get method. |
ByteBuffer |
get
Relative bulk get method. |
ByteBuffer |
get
Relative bulk get method. |
abstract byte |
get
Absolute get method. |
abstract char |
getChar
Relative get method for reading a char value. |
abstract char |
getChar
Absolute get method for reading a char value. |
abstract double |
getDouble
Relative get method for reading a double value. |
abstract double |
getDouble
Absolute get method for reading a double value. |
abstract float |
getFloat
Relative get method for reading a float value. |
abstract float |
getFloat
Absolute get method for reading a float value. |
abstract int |
getInt
Relative get method for reading an int value. |
abstract int |
getInt
Absolute get method for reading an int value. |
abstract long |
getLong
Relative get method for reading a long value. |
abstract long |
getLong
Absolute get method for reading a long value. |
abstract short |
getShort
Relative get method for reading a short value. |
abstract short |
getShort
Absolute get method for reading a short value. |
boolean |
hasArray
Tells whether or not this buffer is backed by an accessible byte array. |
int |
hashCode
Returns the current hash code of this buffer. |
abstract boolean |
isDirect
Tells whether or not this byte buffer is direct. |
ByteOrder |
order
Retrieves this buffer's byte order. |
ByteBuffer |
order
Modifies this buffer's byte order. |
abstract ByteBuffer |
put
Relative put method (optional operation). |
ByteBuffer |
put
Relative bulk put method (optional operation). |
ByteBuffer |
put
Relative bulk put method (optional operation). |
ByteBuffer |
put
Relative bulk put method (optional operation). |
abstract ByteBuffer |
put
Absolute put method (optional operation). |
abstract ByteBuffer |
putChar
Relative put method for writing a char value (optional operation). |
abstract ByteBuffer |
putChar
Absolute put method for writing a char value (optional operation). |
abstract ByteBuffer |
putDouble
Relative put method for writing a double value (optional operation). |
abstract ByteBuffer |
putDouble
Absolute put method for writing a double value (optional operation). |
abstract ByteBuffer |
putFloat
Relative put method for writing a float value (optional operation). |
abstract ByteBuffer |
putFloat
Absolute put method for writing a float value (optional operation). |
abstract ByteBuffer |
putInt
Relative put method for writing an int value (optional operation). |
abstract ByteBuffer |
putInt
Absolute put method for writing an int value (optional operation). |
abstract ByteBuffer |
putLong
Absolute put method for writing a long value (optional operation). |
abstract ByteBuffer |
putLong
Relative put method for writing a long value (optional operation). |
abstract ByteBuffer |
putShort
Absolute put method for writing a short value (optional operation). |
abstract ByteBuffer |
putShort
Relative put method for writing a short value (optional operation). |
abstract ByteBuffer |
slice
Creates a new byte buffer whose content is a shared subsequence of this buffer's content. |
String |
toString
Returns a string summarizing the state of this buffer. |
static ByteBuffer |
wrap
Wraps a byte array into a buffer. |
static ByteBuffer |
wrap
Wraps a byte array into a buffer. |
Methods inherited from class java.nio.Buffer ![]() |
|---|
capacity |
Methods inherited from class java.lang.Object ![]() |
|---|
clone |
| Method Detail |
|---|

public static ByteBuffer![]()
![]()
allocateDirect(int capacity)
The new buffer's position will be zero, its limit will be its
capacity, and its mark will be undefined. Whether or not it has a
backing array
is unspecified.
capacity - The new buffer's capacity, in bytes
IllegalArgumentException

- If the capacity is a negative integer

public static ByteBuffer![]()
![]()
allocate(int capacity)
The new buffer's position will be zero, its limit will be its
capacity, and its mark will be undefined. It will have a backing array
, and its array
offset
will be zero.
capacity - The new buffer's capacity, in bytes
IllegalArgumentException

- If the capacity is a negative integer

public static ByteBuffer![]()
![]()
wrap(byte[] array, int offset, int length)
The new buffer will be backed by the given byte array;
that is, modifications to the buffer will cause the array to be modified
and vice versa. The new buffer's capacity will be
array.length, its position will be offset, its limit
will be offset + length, and its mark will be undefined. Its
backing array
will be the given array, and
its array offset
will be zero.
array - The array that will back the new bufferoffset - The offset of the subarray to be used; must be non-negative and
no larger than array.length. The new buffer's position
will be set to this value.length - The length of the subarray to be used;
must be non-negative and no larger than
array.length - offset.
The new buffer's limit will be set to offset + length.
IndexOutOfBoundsException

- If the preconditions on the offset and length
parameters do not hold

public static ByteBuffer![]()
![]()
wrap(byte[] array)
The new buffer will be backed by the given byte array;
that is, modifications to the buffer will cause the array to be modified
and vice versa. The new buffer's capacity and limit will be
array.length, its position will be zero, and its mark will be
undefined. Its backing array 