public abstract class ByteBuffer extends Buffer implements Comparable<ByteBuffer>
Modifier and Type | Method and Description |
---|---|
static ByteBuffer |
allocate(int capacity)
Creates a byte buffer based on a newly allocated byte array.
|
static ByteBuffer |
allocateDirect(int capacity)
Creates a direct byte buffer based on a newly allocated memory block.
|
byte[] |
array()
Returns the byte array which this buffer is based on, if there is one.
|
int |
arrayOffset()
Returns the offset of the byte array which this buffer is based on, if
there is 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 read-only buffer that shares its 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)
Compares the remaining bytes of this buffer to another byte buffer's
remaining bytes.
|
abstract ByteBuffer |
duplicate()
Returns a duplicated buffer that shares its content with this buffer.
|
boolean |
equals(Object other)
Checks whether this byte buffer is equal to another object.
|
abstract byte |
get()
Returns the byte at the current position and increases the position by 1.
|
ByteBuffer |
get(byte[] dst)
Reads bytes from the current position into the specified byte array and
increases the position by the number of bytes read.
|
ByteBuffer |
get(byte[] dst,
int dstOffset,
int byteCount)
Reads bytes from the current position into the specified byte array,
starting at the specified offset, and increases the position by the
number of bytes read.
|
abstract byte |
get(int index)
Returns the byte at the specified index and does not change the position.
|
abstract char |
getChar()
Returns the char at the current position and increases 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 increases 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 increases 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 increases 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 increases 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 increases the position by 2.
|
abstract short |
getShort(int index)
Returns the short at the specified index.
|
boolean |
hasArray()
Returns true if
array and arrayOffset won't throw. |
int |
hashCode()
Calculates this buffer's hash code from the remaining chars.
|
abstract boolean |
isDirect()
Indicates whether this buffer is direct.
|
ByteOrder |
order()
Returns the byte order used by this buffer when converting bytes 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 increases the position
by 1.
|
ByteBuffer |
put(byte[] src)
Writes bytes in the given byte array to the current position and
increases the position by the number of bytes written.
|
ByteBuffer |
put(byte[] src,
int srcOffset,
int byteCount)
Writes bytes in the given byte array, starting from the specified offset,
to the current position and increases the position by the number of bytes
written.
|
ByteBuffer |
put(ByteBuffer src)
Writes all the remaining bytes of the
src byte buffer to this
buffer's current position, and increases both buffers' position by the
number of bytes copied. |
abstract ByteBuffer |
put(int index,
byte b)
Write a byte to the specified index of this buffer without changing the
position.
|
abstract ByteBuffer |
putChar(char value)
Writes the given char to the current position and increases the position
by 2.
|
abstract ByteBuffer |
putChar(int index,
char value)
Writes the given char to the specified index of this buffer.
|
abstract ByteBuffer |
putDouble(double value)
Writes the given double to the current position and increases the position
by 8.
|
abstract ByteBuffer |
putDouble(int index,
double value)
Writes the given double to the specified index of this buffer.
|
abstract ByteBuffer |
putFloat(float value)
Writes the given float to the current position and increases the position
by 4.
|
abstract ByteBuffer |
putFloat(int index,
float value)
Writes the given float to the specified index of this buffer.
|
abstract ByteBuffer |
putInt(int value)
Writes the given int to the current position and increases the position by
4.
|
abstract ByteBuffer |
putInt(int index,
int value)
Writes the given int to the specified index of this buffer.
|
abstract ByteBuffer |
putLong(int index,
long value)
Writes the given long to the specified index of this buffer.
|
abstract ByteBuffer |
putLong(long value)
Writes the given long to the current position and increases the position
by 8.
|
abstract ByteBuffer |
putShort(int index,
short value)
Writes the given short to the specified index of this buffer.
|
abstract ByteBuffer |
putShort(short value)
Writes the given short to the current position and increases the position
by 2.
|
abstract ByteBuffer |
slice()
Returns a sliced buffer that shares its content with this 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 byteCount)
Creates a new byte buffer by wrapping the given byte array.
|
public static ByteBuffer allocate(int capacity)
capacity
- the capacity of the new bufferIllegalArgumentException
- if capacity < 0
.public static ByteBuffer allocateDirect(int capacity)
capacity
- the capacity of the new bufferIllegalArgumentException
- if capacity < 0
.public 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 onpublic static ByteBuffer wrap(byte[] array, int start, int byteCount)
The new buffer's position will be start
, limit will be
start + byteCount
, capacity will be the length of the array.
array
- the byte array which the new buffer will be based on.start
- the start index, must not be negative and not greater than
array.length
.byteCount
- the length, must not be negative and not greater than
array.length - start
.IndexOutOfBoundsException
- if either start
or byteCount
is invalid.public final byte[] array()
array
in class Buffer
ReadOnlyBufferException
- if this buffer is based on a read-only array.UnsupportedOperationException
- if this buffer is not based on an array.public final int arrayOffset()
The offset is the index of the array which corresponds to the zero position of the buffer.
arrayOffset
in class Buffer
ReadOnlyBufferException
- if this buffer is based on a read-only array.UnsupportedOperationException
- if this buffer is not based on an array.public 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 read-only property and byte order are the same as this buffer's. The new buffer is direct if this byte buffer is direct.
The new buffer shares its 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 eight, and its mark is not set. The new buffer's read-only property and byte order are the same as this buffer's. The new buffer is direct if this byte buffer is direct.
The new buffer shares its 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 four, and its mark is not set. The new buffer's read-only property and byte order are the same as this buffer's. The new buffer is direct if this byte buffer is direct.
The new buffer shares its 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 four, and its mark is not set. The new buffer's read-only property and byte order are the same as this buffer's. The new buffer is direct if this byte buffer is direct.
The new buffer shares its 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 eight, and its mark is not set. The new buffer's read-only property and byte order are the same as this buffer's. The new buffer is direct if this byte buffer is direct.
The new buffer shares its 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 read-only itself. The new buffer's position, limit, capacity and mark are the same as this buffer.
The new buffer shares its 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 read-only property and byte order are the same as this buffer's. The new buffer is direct if this byte buffer is direct.
The new buffer shares its 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 bytes will be moved to the head of the
buffer, starting from position zero. Then the position is set to
remaining()
; the limit is set to capacity; the mark is
cleared.
this
ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public int compareTo(ByteBuffer otherBuffer)
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 buffer.public abstract ByteBuffer duplicate()
The duplicated buffer's position, limit, capacity and mark are the same as this buffer's. The duplicated buffer's read-only property and byte order are the same as this buffer's too.
The new buffer shares its 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 equal if and only if their remaining bytes are exactly
the same. Position, limit, capacity and mark are not considered.
equals
in class Object
other
- the object to compare with this byte buffer.true
if this byte buffer is equal to other
,
false
otherwise.Object.hashCode()
public abstract byte get()
BufferUnderflowException
- if the position is equal or greater than limit.public ByteBuffer get(byte[] dst)
Calling this method has the same effect as
get(dst, 0, dst.length)
.
dst
- the destination byte array.this
BufferUnderflowException
- if dst.length
is greater than remaining()
.public ByteBuffer get(byte[] dst, int dstOffset, int byteCount)
dst
- the target byte array.dstOffset
- the offset of the byte array, must not be negative and
not greater than dst.length
.byteCount
- the number of bytes to read, must not be negative and not
greater than dst.length - dstOffset
this
IndexOutOfBoundsException
- if dstOffset < 0 || byteCount < 0
BufferUnderflowException
- if byteCount > remaining()
public abstract byte get(int index)
index
- the index, must not be negative and less than limit.IndexOutOfBoundsException
- if index is invalid.public abstract char getChar()
The 2 bytes starting at the current position are composed into a char according to the current byte order and returned.
BufferUnderflowException
- if the position is greater than limit - 2
.public abstract char getChar(int index)
The 2 bytes starting from the specified index are composed into a char according to the current byte order and returned. The position is not changed.
index
- the index, must not be negative and equal or less than
limit - 2
.IndexOutOfBoundsException
- if index
is invalid.public abstract double getDouble()
The 8 bytes starting from the current position are composed into a double according to the current byte order and returned.
BufferUnderflowException
- if the position is greater than limit - 8
.public abstract double getDouble(int index)
The 8 bytes starting at the specified index are composed into a double according to the current byte order and returned. The position is not changed.
index
- the index, must not be negative and equal or less than
limit - 8
.IndexOutOfBoundsException
- if index
is invalid.public abstract float getFloat()
The 4 bytes starting at the current position are composed into a float according to the current byte order and returned.
BufferUnderflowException
- if the position is greater than limit - 4
.public abstract float getFloat(int index)
The 4 bytes starting at the specified index are composed into a float according to the current byte order and returned. The position is not changed.
index
- the index, must not be negative and equal or less than
limit - 4
.IndexOutOfBoundsException
- if index
is invalid.public abstract int getInt()
The 4 bytes starting at the current position are composed into a int according to the current byte order and returned.
BufferUnderflowException
- if the position is greater than limit - 4
.public abstract int getInt(int index)
The 4 bytes starting at the specified index are composed into a int according to the current byte order and returned. The position is not changed.
index
- the index, must not be negative and equal or less than
limit - 4
.IndexOutOfBoundsException
- if index
is invalid.public abstract long getLong()
The 8 bytes starting at the current position are composed into a long according to the current byte order and returned.
BufferUnderflowException
- if the position is greater than limit - 8
.public abstract long getLong(int index)
The 8 bytes starting at the specified index are composed into a long according to the current byte order and returned. The position is not changed.
index
- the index, must not be negative and equal or less than
limit - 8
.IndexOutOfBoundsException
- if index
is invalid.public abstract short getShort()
The 2 bytes starting at the current position are composed into a short according to the current byte order and returned.
BufferUnderflowException
- if the position is greater than limit - 2
.public abstract short getShort(int index)
The 2 bytes starting at the specified index are composed into a short according to the current byte order and returned. The position is not changed.
index
- the index, must not be negative and equal or less than
limit - 2
.IndexOutOfBoundsException
- if index
is invalid.public final boolean hasArray()
Buffer
array
and arrayOffset
won't throw. This method does not
return true for buffers not backed by arrays because the other methods would throw
UnsupportedOperationException
, nor does it return true for buffers backed by
read-only arrays, because the other methods would throw ReadOnlyBufferException
.public int hashCode()
hashCode
in class Object
Object.equals(java.lang.Object)
public abstract boolean isDirect()
public final ByteOrder order()
The default byte order of byte buffer is always
BIG_ENDIAN
public final ByteBuffer order(ByteOrder byteOrder)
byteOrder
- the byte order to set. If null
then the order
will be LITTLE_ENDIAN
.this
ByteOrder
public abstract ByteBuffer put(byte b)
b
- the byte to write.this
BufferOverflowException
- if position is equal or greater than limit.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public final ByteBuffer put(byte[] src)
Calling this method has the same effect as
put(src, 0, src.length)
.
src
- the source byte array.this
BufferOverflowException
- if remaining()
is less than src.length
.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public ByteBuffer put(byte[] src, int srcOffset, int byteCount)
src
- the source byte array.srcOffset
- the offset of byte array, must not be negative and not greater
than src.length
.byteCount
- the number of bytes to write, must not be negative and not
greater than src.length - srcOffset
.this
BufferOverflowException
- if remaining()
is less than byteCount
.IndexOutOfBoundsException
- if either srcOffset
or byteCount
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public ByteBuffer put(ByteBuffer src)
src
byte buffer to this
buffer's current position, and increases both buffers' position by the
number of bytes copied.src
- the source byte buffer.this
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 buffer.public abstract ByteBuffer put(int index, byte b)
index
- the index, must not be negative and less than the limit.b
- the byte to write.this
IndexOutOfBoundsException
- if index
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public abstract ByteBuffer putChar(char value)
The char is converted to bytes using the current byte order.
value
- the char to write.this
BufferOverflowException
- if position is greater than limit - 2
.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public 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 not be negative and equal or less than
limit - 2
.value
- the char to write.this
IndexOutOfBoundsException
- if index
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public abstract ByteBuffer putDouble(double value)
The double is converted to bytes using the current byte order.
value
- the double to write.this
BufferOverflowException
- if position is greater than limit - 8
.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public 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 not be negative and equal or less than
limit - 8
.value
- the double to write.this
IndexOutOfBoundsException
- if index
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public abstract ByteBuffer putFloat(float value)
The float is converted to bytes using the current byte order.
value
- the float to write.this
BufferOverflowException
- if position is greater than limit - 4
.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public 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 not be negative and equal or less than
limit - 4
.value
- the float to write.this
IndexOutOfBoundsException
- if index
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public abstract ByteBuffer putInt(int value)
The int is converted to bytes using the current byte order.
value
- the int to write.this
BufferOverflowException
- if position is greater than limit - 4
.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public 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 not be negative and equal or less than
limit - 4
.value
- the int to write.this
IndexOutOfBoundsException
- if index
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public abstract ByteBuffer putLong(long value)
The long is converted to bytes using the current byte order.
value
- the long to write.this
BufferOverflowException
- if position is greater than limit - 8
.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public 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 not be negative and equal or less than
limit - 8
.value
- the long to write.this
IndexOutOfBoundsException
- if index
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public abstract ByteBuffer putShort(short value)
The short is converted to bytes using the current byte order.
value
- the short to write.this
BufferOverflowException
- if position is greater than limit - 2
.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public 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 not be negative and equal or less than
limit - 2
.value
- the short to write.this
IndexOutOfBoundsException
- if index
is invalid.ReadOnlyBufferException
- if no changes may be made to the contents of this buffer.public abstract ByteBuffer slice()
The sliced buffer's capacity will be this buffer's
remaining()
, and it's 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 cleared. The new buffer's
read-only property and byte order are the same as this buffer's.
The new buffer shares its 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.