|
Final | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.nio.Buffer
java.nio.ByteBuffer
public abstract class ByteBuffer
A buffer of byte
s.
A byte buffer can be created in either of the following ways:
Allocate
a new byte array and create a buffer
based on it;Allocate
a memory block and create a direct
buffer based on it;Wrap
an existing byte array to create a new
buffer.
Method Summary | |
---|---|
static ByteBuffer |
allocate(int capacity)
Creates a byte buffer based on a new allocated byte array. |
static ByteBuffer |
allocateDirect(int capacity)
Creates a direct byte buffer based on a new allocated memory block. |
byte[] |
array()
Returns the byte array which this buffer is based on, if there's one. |
int |
arrayOffset()
Returns the offset of the byte array which this buffer is based on, if there's one. |
abstract CharBuffer |
asCharBuffer()
Returns a char buffer which is based on the remaining content of this byte buffer. |
abstract DoubleBuffer |
asDoubleBuffer()
Returns a double buffer which is based on the remaining content of this byte buffer. |
abstract FloatBuffer |
asFloatBuffer()
Returns a float buffer which is based on the remaining content of this byte buffer. |
abstract IntBuffer |
asIntBuffer()
Returns a int buffer which is based on the remaining content of this byte buffer. |
abstract LongBuffer |
asLongBuffer()
Returns a long buffer which is based on the remaining content of this byte buffer. |
abstract ByteBuffer |
asReadOnlyBuffer()
Returns a readonly buffer that shares content with this buffer. |
abstract ShortBuffer |
asShortBuffer()
Returns a short buffer which is based on the remaining content of this byte buffer. |
abstract ByteBuffer |
compact()
Compacts this byte buffer. |
int |
compareTo(ByteBuffer otherBuffer)
Compare the remaining byte s of this buffer to another
byte buffer's remaining byte s. |
abstract ByteBuffer |
duplicate()
Returns a duplicated buffer that shares content with this buffer. |
boolean |
equals(Object other)
Tests whether this byte buffer equals to another object. |
abstract byte |
get()
Returns the byte at the current position and increase the position by 1. |
ByteBuffer |
get(byte[] dest)
Reads byte s from the current position into the specified
byte array and increase the position by the number of byte s
read. |
ByteBuffer |
get(byte[] dest,
int off,
int len)
Reads byte s from the current position into the specified
byte array, starting from the specified offset, and increase the position
by the number of byte s read. |
abstract byte |
get(int index)
Returns a byte at the specified index, and the position is not changed. |
abstract char |
getChar()
Returns the char at the current position and increase the position by 2. |
abstract char |
getChar(int index)
Returns the char at the specified index. |
abstract double |
getDouble()
Returns the double at the current position and increase the position by 8. |
abstract double |
getDouble(int index)
Returns the double at the specified index. |
abstract float |
getFloat()
Returns the float at the current position and increase the position by 4. |
abstract float |
getFloat(int index)
Returns the float at the specified index. |
abstract int |
getInt()
Returns the int at the current position and increase the position by 4. |
abstract int |
getInt(int index)
Returns the int at the specified index. |
abstract long |
getLong()
Returns the long at the current position and increase the position by 8. |
abstract long |
getLong(int index)
Returns the long at the specified index. |
abstract short |
getShort()
Returns the short at the current position and increase the position by 2. |
abstract short |
getShort(int index)
Returns the short at the specified index. |
boolean |
hasArray()
Returns whether this buffer is based on a byte array and is read/write. |
int |
hashCode()
Hash code is calculated from the remaining byte s. |
abstract boolean |
isDirect()
Returns true if this buffer is direct. |
ByteOrder |
order()
Returns the byte order used by this buffer when converting byte s from/to other primitive types. |
ByteBuffer |
order(ByteOrder byteOrder)
Sets the byte order of this buffer. |
abstract ByteBuffer |
put(byte b)
Writes the given byte to the current position and increase the position by 1. |
ByteBuffer |
put(byte[] src)
Writes byte s in the given byte array to the current
position and increase the position by the number of byte s
written. |
ByteBuffer |
put(byte[] src,
int off,
int len)
Writes byte s in the given byte array, starting from the
specified offset, to the current position and increase the position by
the number of byte s written. |
ByteBuffer |
put(ByteBuffer src)
Writes all the remaining byte s of the src
byte buffer to this buffer's current position, and increase both buffers'
position by the number of byte s copied. |
abstract ByteBuffer |
put(int index,
byte b)
Write a byte to the specified index of this buffer and the position is not changed. |
abstract ByteBuffer |
putChar(char value)
Writes the given char to the current position and increase the position by 2. |
abstract ByteBuffer |
putChar(int index,
char value)
Write a char to the specified index of this buffer. |
abstract ByteBuffer |
putDouble(double value)
Writes the given double to the current position and increase the position by 8. |
abstract ByteBuffer |
putDouble(int index,
double value)
Write a double to the specified index of this buffer. |
abstract ByteBuffer |
putFloat(float value)
Writes the given float to the current position and increase the position by 4. |
abstract ByteBuffer |
putFloat(int index,
float value)
Write a float to the specified index of this buffer. |
abstract ByteBuffer |
putInt(int value)
Writes the given int to the current position and increase the position by 4. |
abstract ByteBuffer |
putInt(int index,
int value)
Write a int to the specified index of this buffer. |
abstract ByteBuffer |
putLong(int index,
long value)
Write a long to the specified index of this buffer. |
abstract ByteBuffer |
putLong(long value)
Writes the given long to the current position and increase the position by 8. |
abstract ByteBuffer |
putShort(int index,
short value)
Write a short to the specified index of this buffer. |
abstract ByteBuffer |
putShort(short value)
Writes the given short to the current position and increase the position by 2. |
abstract ByteBuffer |
slice()
Returns a sliced buffer that shares content with this buffer. |
String |
toString()
Returns a string represents the state of this byte buffer. |
static ByteBuffer |
wrap(byte[] array)
Creates a new byte buffer by wrapping the given byte array. |
static ByteBuffer |
wrap(byte[] array,
int start,
int len)
Creates new a byte buffer by wrapping the given byte array. |
Methods inherited from class java.nio.Buffer |
---|
capacity, clear, flip, hasRemaining, isReadOnly, limit, limit, mark, position, position, remaining, reset, rewind |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Method Detail |
---|
public static ByteBuffer allocate(int capacity)
capacity
- The capacity of the new buffer
IllegalArgumentException
- If capacity
is less than zeropublic static ByteBuffer allocateDirect(int capacity)
capacity
- The capacity of the new buffer
IllegalArgumentException
- If capacity
is less than zeropublic static ByteBuffer wrap(byte[] array)
Calling this method has the same effect as
wrap(array, 0, array.length)
.
array
- The byte array which the new buffer will be based on
public static ByteBuffer wrap(byte[] array, int start, int len)
The new buffer's position will be start
, limit will be
start + len
, capacity will be the length of the array.
array
- The byte array which the new buffer will be based onstart
- The start index, must be no less than zero and no greater than
array.length
len
- The length, must be no less than zero and no greater than
array.length - start
IndexOutOfBoundsException
- If either start
or len
is
invalidpublic final byte[] array()
ReadOnlyBufferException
- If this buffer is based on a readonly array
UnsupportedOperationException
- If this buffer is not based on an arraypublic final int arrayOffset()
The offset is the index of the array corresponds to the zero position of the buffer.
ReadOnlyBufferException
- If this buffer is based on a readonly array
UnsupportedOperationException
- If this buffer is not based on an arraypublic abstract CharBuffer asCharBuffer()
The new buffer's position is zero, its limit and capacity is the number of remaining bytes divided by two, and its mark is not set. The new buffer's readonly property and byte order are same as this buffer. The new buffer is direct, if this byte buffer is direct.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public abstract DoubleBuffer asDoubleBuffer()
The new buffer's position is zero, its limit and capacity is the number of remaining bytes divided by two, and its mark is not set. The new buffer's readonly property and byte order are same as this buffer. The new buffer is direct, if this byte buffer is direct.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public abstract FloatBuffer asFloatBuffer()
The new buffer's position is zero, its limit and capacity is the number of remaining bytes divided by two, and its mark is not set. The new buffer's readonly property and byte order are same as this buffer. The new buffer is direct, if this byte buffer is direct.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public abstract IntBuffer asIntBuffer()
The new buffer's position is zero, its limit and capacity is the number of remaining bytes divided by two, and its mark is not set. The new buffer's readonly property and byte order are same as this buffer. The new buffer is direct, if this byte buffer is direct.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public abstract LongBuffer asLongBuffer()
The new buffer's position is zero, its limit and capacity is the number of remaining bytes divided by two, and its mark is not set. The new buffer's readonly property and byte order are same as this buffer. The new buffer is direct, if this byte buffer is direct.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public abstract ByteBuffer asReadOnlyBuffer()
The returned buffer is guaranteed to be a new instance, even if this buffer is readonly itself. The new buffer's position, limit, capacity and mark are the same as this buffer.
The new buffer shares content with this buffer, which means this buffer's change of content will be visible to the new buffer. The two buffer's position, limit and mark are independent.
public abstract ShortBuffer asShortBuffer()
The new buffer's position is zero, its limit and capacity is the number of remaining bytes divided by two, and its mark is not set. The new buffer's readonly property and byte order are same as this buffer. The new buffer is direct, if this byte buffer is direct.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public abstract ByteBuffer compact()
The remaining byte
s will be moved to the head of the
buffer, staring from position zero. Then the position is set to
remaining()
; the limit is set to capacity; the mark is
cleared.
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic int compareTo(ByteBuffer otherBuffer)
byte
s of this buffer to another
byte buffer's remaining byte
s.
compareTo
in interface Comparable<ByteBuffer>
otherBuffer
- Another byte buffer
other
; 0 if
this equals to other
; a positive value if this is
greater than other
ClassCastException
- If other
is not a byte bufferpublic abstract ByteBuffer duplicate()
The duplicated buffer's position, limit, capacity and mark are the same as this buffer. The duplicated buffer's readonly property and byte order are same as this buffer too.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public boolean equals(Object other)
If other
is not a byte buffer, then false is returned.
Two byte buffers are equals if, and only if, their remaining
byte
s are exactly the same. Position, limit, capacity and
mark are not considered.
equals
in class Object
other
- the object to compare against
Object.hashCode()
public abstract byte get()
BufferUnderflowException
- If the position is equal or greater than limitpublic ByteBuffer get(byte[] dest)
byte
s from the current position into the specified
byte array and increase the position by the number of byte
s
read.
Calling this method has the same effect as
get(dest, 0, dest.length)
.
dest
- The destination byte array
BufferUnderflowException
- if dest.length
is greater than
remaining()
public ByteBuffer get(byte[] dest, int off, int len)
byte
s from the current position into the specified
byte array, starting from the specified offset, and increase the position
by the number of byte
s read.
dest
- The target byte arrayoff
- The offset of the byte array, must be no less than zero and no
greater than dest.length
len
- The number of byte
s to read, must be no less
than zero and no greater than dest.length - off
IndexOutOfBoundsException
- If either off
or len
is
invalid
BufferUnderflowException
- If len
is greater than
remaining()
public abstract byte get(int index)
index
- The index, must be no less than zero and less than limit
IndexOutOfBoundsException
- If index is invalidpublic abstract char getChar()
The 2 bytes start from the current position are composed into a char according to current byte order and returned. The position increases by 2.
BufferUnderflowException
- If the position is greater than limit - 2
public abstract char getChar(int index)
The 2 bytes start from the specified index are composed into a char according to current byte order and returned. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 2
IndexOutOfBoundsException
- If index
is invalidpublic abstract double getDouble()
The 8 bytes start from the current position are composed into a double according to current byte order and returned. The position increases by 8.
BufferUnderflowException
- If the position is greater than limit - 8
public abstract double getDouble(int index)
The 8 bytes start from the specified index are composed into a double according to current byte order and returned. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 8
IndexOutOfBoundsException
- If index
is invalidpublic abstract float getFloat()
The 4 bytes start from the current position are composed into a float according to current byte order and returned. The position increases by 4.
BufferUnderflowException
- If the position is greater than limit - 4
public abstract float getFloat(int index)
The 4 bytes start from the specified index are composed into a float according to current byte order and returned. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 4
IndexOutOfBoundsException
- If index
is invalidpublic abstract int getInt()
The 4 bytes start from the current position are composed into a int according to current byte order and returned. The position increases by 4.
BufferUnderflowException
- If the position is greater than limit - 4
public abstract int getInt(int index)
The 4 bytes start from the specified index are composed into a int according to current byte order and returned. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 4
IndexOutOfBoundsException
- If index
is invalidpublic abstract long getLong()
The 8 bytes start from the current position are composed into a long according to current byte order and returned. The position increases by 8.
BufferUnderflowException
- If the position is greater than limit - 8
public abstract long getLong(int index)
The 8 bytes start from the specified index are composed into a long according to current byte order and returned. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 8
IndexOutOfBoundsException
- If index
is invalidpublic abstract short getShort()
The 2 bytes start from the current position are composed into a short according to current byte order and returned. The position increases by 2.
BufferUnderflowException
- If the position is greater than limit - 2
public abstract short getShort(int index)
The 2 bytes start from the specified index are composed into a short according to current byte order and returned. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 2
IndexOutOfBoundsException
- If index
is invalidpublic final boolean hasArray()
If this buffer is readonly, then false is returned.
public int hashCode()
byte
s.
Position, limit, capacity and mark don't affect the hash code.
hashCode
in class Object
byte
s.Object.equals(java.lang.Object)
public abstract boolean isDirect()
A byte buffer is direct, if it is based on a byte buffer and the byte buffer is direct.
public final ByteOrder order()
byte
s from/to other primitive types.
The default byte order of byte buffer is always BIG_ENDIAN.
byte
s from/to other primitive types.public final ByteBuffer order(ByteOrder byteOrder)
byteOrder
- The byte order to set. If null
then the order
will be LITTLE_ENDIAN
.
ByteOrder
public abstract ByteBuffer put(byte b)
b
- The byte to write
BufferOverflowException
- If position is equal or greater than limit
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic final ByteBuffer put(byte[] src)
byte
s in the given byte array to the current
position and increase the position by the number of byte
s
written.
Calling this method has the same effect as
put(src, 0, src.length)
.
src
- The source byte array
BufferOverflowException
- If remaining()
is less than
src.length
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic ByteBuffer put(byte[] src, int off, int len)
byte
s in the given byte array, starting from the
specified offset, to the current position and increase the position by
the number of byte
s written.
src
- The source byte arrayoff
- The offset of byte array, must be no less than zero and no
greater than src.length
len
- The number of byte
s to write, must be no less
than zero and no greater than src.length - off
BufferOverflowException
- If remaining()
is less than
len
IndexOutOfBoundsException
- If either off
or len
is
invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic ByteBuffer put(ByteBuffer src)
byte
s of the src
byte buffer to this buffer's current position, and increase both buffers'
position by the number of byte
s copied.
src
- The source byte buffer
BufferOverflowException
- If src.remaining()
is greater than this
buffer's remaining()
IllegalArgumentException
- If src
is this buffer
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer put(int index, byte b)
index
- The index, must be no less than zero and less than the limitb
- The byte to write
IndexOutOfBoundsException
- If index
is invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putChar(char value)
The char is converted to bytes using the current byte order.
value
- The char to write
BufferOverflowException
- If position is greater than limit - 2
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putChar(int index, char value)
The char is converted to bytes using the current byte order. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 2
value
- The char to write
IndexOutOfBoundsException
- If index
is invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putDouble(double value)
The double is converted to bytes using the current byte order.
value
- The double to write
BufferOverflowException
- If position is greater than limit - 8
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putDouble(int index, double value)
The double is converted to bytes using the current byte order. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 8
value
- The double to write
IndexOutOfBoundsException
- If index
is invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putFloat(float value)
The float is converted to bytes using the current byte order.
value
- The float to write
BufferOverflowException
- If position is greater than limit - 4
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putFloat(int index, float value)
The float is converted to bytes using the current byte order. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 4
value
- The float to write
IndexOutOfBoundsException
- If index
is invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putInt(int value)
The int is converted to bytes using the current byte order.
value
- The int to write
BufferOverflowException
- If position is greater than limit - 4
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putInt(int index, int value)
The int is converted to bytes using the current byte order. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 4
value
- The int to write
IndexOutOfBoundsException
- If index
is invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putLong(long value)
The long is converted to bytes using the current byte order.
value
- The long to write
BufferOverflowException
- If position is greater than limit - 8
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putLong(int index, long value)
The long is converted to bytes using the current byte order. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 8
value
- The long to write
IndexOutOfBoundsException
- If index
is invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putShort(short value)
The short is converted to bytes using the current byte order.
value
- The short to write
BufferOverflowException
- If position is greater than limit - 2
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer putShort(int index, short value)
The short is converted to bytes using the current byte order. The position is not changed.
index
- The index, must be no less than zero and equal or less than
limit - 2
value
- The short to write
IndexOutOfBoundsException
- If index
is invalid
ReadOnlyBufferException
- If no changes may be made to the contents of this bufferpublic abstract ByteBuffer slice()
The sliced buffer's capacity will be this buffer's
remaining()
, and its zero position will correspond to
this buffer's current position. The new buffer's position will be 0,
limit will be its capacity, and its mark is unset. The new buffer's
readonly property and byte order are same as this buffer.
The new buffer shares content with this buffer, which means either buffer's change of content will be visible to the other. The two buffer's position, limit and mark are independent.
public String toString()
toString
in class Object
|
Final | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |