- 所有已实现的接口:
Appendable,CharSequence,Comparable<CharBuffer>,Readable
此类定义了对字符缓冲区的四类操作:
绝对和相对
bulk get方法,将连续的字符序列从该缓冲区传输到数组中;绝对和相对
bulk put方法,将连续的字符序列从 char 数组、字符串或其他一些 char 缓冲区传输到此缓冲区;compacting字符缓冲区的方法。
字符缓冲区可以通过 allocation 创建,它为缓冲区的内容分配空间,通过 wrapping 将现有的字符数组或字符串放入缓冲区,或者通过创建现有字节缓冲区的 看法 来创建。
与字节缓冲区一样,字符缓冲区是 直接的或者非直接的 。通过此类的 wrap 方法创建的字符缓冲区将是非直接的。当且仅当字节缓冲区本身是直接的时,作为字节缓冲区的视图创建的 char 缓冲区将是直接的。 char 缓冲区是否是直接的可以通过调用 isDirect 方法来确定。
此类实现了 CharSequence 接口,以便可以在接受字符序列的任何地方使用字符缓冲区,例如在正则表达式包 java.util.regex 中。 CharSequence 定义的方法在调用时相对于缓冲区的当前位置进行操作。
此类中没有返回值的方法被指定为返回调用它们的缓冲区。这允许链接方法调用。语句的顺序
cb.put("text/");
cb.put(subtype);
cb.put("; charset=");
cb.put(enc);
例如,可以用单个语句代替
cb.put("text/").put(subtype).put("; charset=").put(enc);
- 自从:
- 1.4
-
方法总结
修饰符和类型方法描述static CharBufferallocate(int capacity) 分配一个新的字符缓冲区。append(char c) 将指定的字符追加到此缓冲区(可选操作).append(CharSequence csq) 将指定的字符序列追加到此缓冲区(可选操作).append(CharSequence csq, int start, int end) 将指定字符序列的子序列追加到此缓冲区(可选操作).final char[]array()返回支持此缓冲区的字符数组(可选操作).final int返回缓冲区第一个元素在此缓冲区的后备数组中的偏移量(可选操作).abstract CharBuffer创建一个共享此缓冲区内容的新的只读字符缓冲区。final charcharAt(int index) 读取相对于当前位置的给定索引处的字符。final CharBufferclear()清除此缓冲区。abstract CharBuffercompact()压缩此缓冲区(可选操作).intcompareTo(CharBuffer that) 将此缓冲区与另一个缓冲区进行比较。abstract CharBuffer创建一个共享此缓冲区内容的新字符缓冲区。boolean告知此缓冲区是否等于另一个对象。final CharBufferflip()翻转此缓冲区。abstract charget()相对的get方法。get(char[] dst) 相对体积get方法。get(char[] dst, int offset, int length) 相对体积get方法。abstract charget(int index) 绝对get方法。get(int index, char[] dst) 绝对散装get方法。get(int index, char[] dst, int offset, int length) 绝对散装get方法。final booleanhasArray()告知此缓冲区是否由可访问的字符数组支持。inthashCode()返回此缓冲区的当前哈希码。abstract booleanisDirect()判断此 char 缓冲区是否是直接的。final booleanisEmpty()如果此字符缓冲区为空,则返回true。final intlength()返回此字符缓冲区的长度。final CharBufferlimit(int newLimit) 设置此缓冲区的限制。final CharBuffermark()在其位置设置此缓冲区的标记。intmismatch(CharBuffer that) 查找并返回此缓冲区与给定缓冲区之间第一个不匹配的相对索引。abstract ByteOrderorder()检索此缓冲区的字节顺序。final CharBufferposition(int newPosition) 设置此缓冲区的位置。abstract CharBufferput(char c) 相对的put方法(可选操作).final CharBufferput(char[] src) 相对体积put方法(可选操作).put(char[] src, int offset, int length) 相对体积put方法(可选操作).abstract CharBufferput(int index, char c) 绝对put方法(可选操作).put(int index, char[] src) 绝对散装put方法(可选操作).put(int index, char[] src, int offset, int length) 绝对散装put方法(可选操作).put(int index, CharBuffer src, int offset, int length) 绝对散装put方法(可选操作).final CharBuffer相对体积put方法(可选操作).相对体积put方法(可选操作).put(CharBuffer src) 相对体积put方法(可选操作).intread(CharBuffer target) 尝试将字符读入指定的字符缓冲区。final CharBufferreset()将此缓冲区的位置重置为先前标记的位置。final CharBufferrewind()倒带此缓冲区。abstract CharBufferslice()创建一个新的字符缓冲区,其内容是此缓冲区内容的共享子序列。abstract CharBufferslice(int index, int length) 创建一个新的字符缓冲区,其内容是此缓冲区内容的共享子序列。abstract CharBuffersubSequence(int start, int end) 创建一个新的字符缓冲区,表示该缓冲区相对于当前位置的指定子序列。toString()返回包含此缓冲区中的字符的字符串。static CharBufferwrap(char[] array) 将 char 数组包装到缓冲区中。static CharBufferwrap(char[] array, int offset, int length) 将 char 数组包装到缓冲区中。static CharBufferwrap(CharSequence csq) 将字符序列包装到缓冲区中。static CharBufferwrap(CharSequence csq, int start, int end) 将字符序列包装到缓冲区中。在类 java.nio.Buffer 中声明的方法
capacity, hasRemaining, isReadOnly, limit, position, remaining在接口 java.lang.CharSequence 中声明的方法
chars, codePoints
-
方法详情
-
allocate
分配一个新的字符缓冲区。新缓冲区的位置将为零,其限制为其容量,其标记为未定义,其每个元素都将初始化为零,其字节顺序将为底层硬件的
native order。它会有一个backing array,它的array offset将为零。- 参数:
capacity- 新缓冲区的容量,以字符为单位- 返回:
- 新的字符缓冲区
- 抛出:
IllegalArgumentException- 如果capacity是负整数
-
wrap
将 char 数组包装到缓冲区中。新缓冲区将由给定的 char 数组支持;也就是说,对缓冲区的修改将导致数组被修改,反之亦然。新缓冲区的容量为
array.length,位置为offset,限制为offset + length,标记未定义,字节顺序为底层硬件的native order。它的backing array将是给定的数组,而它的array offset将为零。- 参数:
array- 将支持新缓冲区的数组offset- 要使用的子数组的偏移量;必须为非负且不大于array.length。新缓冲区的位置将设置为此值。length- 要使用的子数组的长度;必须为非负且不大于array.length - offset。新缓冲区的限制将设置为offset + length。- 返回:
- 新的字符缓冲区
- 抛出:
IndexOutOfBoundsException- 如果offset和length参数的先决条件不成立
-
wrap
将 char 数组包装到缓冲区中。新缓冲区将由给定的 char 数组支持;也就是说,对缓冲区的修改将导致数组被修改,反之亦然。新缓冲区的容量和限制将为
array.length,其位置将为零,其标记将未定义,其字节顺序将为底层硬件的native order。它的backing array将是给定的数组,而它的array offset将为零。- 参数:
array- 将支持此缓冲区的数组- 返回:
- 新的字符缓冲区
-
read
尝试将字符读入指定的字符缓冲区。缓冲区按原样用作字符存储库:所做的唯一更改是 put 操作的结果。不执行缓冲区的翻转或倒带。- 指定者:
read在接口Readable中- 参数:
target- 将字符读入的缓冲区- 返回:
- 添加到缓冲区的字符数,如果此字符源在其末尾则为 -1
- 抛出:
IOException- 如果发生 I/O 错误ReadOnlyBufferException- 如果目标是只读缓冲区- 自从:
- 1.5
-
wrap
将字符序列包装到缓冲区中。新的只读缓冲区的内容将是给定字符序列的内容。缓冲区的容量为
csq.length(),其位置为start,其限制为end,其标记未定义。- 参数:
csq- 要创建新字符缓冲区的字符序列start- 要使用的第一个字符的索引;必须为非负且不大于csq.length()。新缓冲区的位置将设置为此值。end- 要使用的最后一个字符之后的字符的索引;必须不小于start且不大于csq.length()。新缓冲区的限制将设置为此值。- 返回:
- 新的字符缓冲区
- 抛出:
IndexOutOfBoundsException- 如果start和end参数的先决条件不成立
-
wrap
将字符序列包装到缓冲区中。新的只读缓冲区的内容将是给定字符序列的内容。新缓冲区的容量和限制将为
csq.length(),其位置将为零,其标记为未定义。- 参数:
csq- 要创建新字符缓冲区的字符序列- 返回:
- 新的字符缓冲区
-
slice
创建一个新的字符缓冲区,其内容是此缓冲区内容的共享子序列。新缓冲区的内容将从该缓冲区的当前位置开始。对此缓冲区内容的更改将在新缓冲区中可见,反之亦然;两个缓冲区的位置、限制和标记值将是独立的。
新缓冲区的位置将为零,其容量和限制将为该缓冲区中剩余的字符数,其标记将未定义,其字节顺序将与该缓冲区的字节顺序相同。当且仅当此缓冲区是直接的时,新缓冲区将是直接的,并且当且仅当此缓冲区是只读的时,它将是只读的。
-
slice
创建一个新的字符缓冲区,其内容是此缓冲区内容的共享子序列。新缓冲区的内容将从该缓冲区中的位置
index开始,并将包含length个元素。对此缓冲区内容的更改将在新缓冲区中可见,反之亦然;两个缓冲区的位置、限制和标记值将是独立的。新缓冲区的位置将为零,其容量和限制将为
length,其标记将未定义,其字节顺序将与该缓冲区的字节顺序相同。当且仅当此缓冲区是直接的时,新缓冲区将是直接的,并且当且仅当此缓冲区是只读的时,它将是只读的。- 指定者:
slice在类Buffer中- 参数:
index- 该缓冲区中新缓冲区内容开始的位置;必须为非负且不大于limit()length- 新缓冲区将包含的元素数;必须为非负且不大于limit() - index- 返回:
- 新缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负或大于limit(),则length为负,或length > limit() - index- 自从:
- 13
-
duplicate
创建一个共享此缓冲区内容的新字符缓冲区。新缓冲区的内容将是该缓冲区的内容。对此缓冲区内容的更改将在新缓冲区中可见,反之亦然;两个缓冲区的位置、限制和标记值将是独立的。
新缓冲区的容量、限制、位置、标记值和字节顺序将与该缓冲区的相同。当且仅当此缓冲区是直接的时,新缓冲区将是直接的,并且当且仅当此缓冲区是只读的时,它将是只读的。
-
asReadOnlyBuffer
创建一个共享此缓冲区内容的新的只读字符缓冲区。新缓冲区的内容将是该缓冲区的内容。对此缓冲区内容的更改将在新缓冲区中可见;然而,新缓冲区本身将是只读的,并且不允许修改共享内容。两个缓冲区的位置、限制和标记值将是独立的。
新缓冲区的容量、限制、位置、标记值和字节顺序将与该缓冲区的相同。
如果此缓冲区本身是只读的,则此方法的行为方式与
duplicate方法完全相同。- 返回:
- 新的只读字符缓冲区
-
get
public abstract char get()相对的get方法。读取此缓冲区当前位置的字符,然后递增该位置。- 返回:
- 缓冲区当前位置的字符
- 抛出:
BufferUnderflowException- 如果缓冲区的当前位置不小于其限制
-
put
相对的put方法(可选操作).将给定的 char 在当前位置写入此缓冲区,然后递增该位置。
- 参数:
c- 要写入的字符- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果此缓冲区的当前位置不小于其限制ReadOnlyBufferException- 如果这个缓冲区是只读的
-
get
public abstract char get(int index) 绝对get方法。读取给定索引处的字符。- 参数:
index- 从中读取字符的索引- 返回:
- 给定索引处的字符
- 抛出:
IndexOutOfBoundsException- 如果index为负数或不小于缓冲区的限制
-
put
绝对put方法(可选操作).将给定的字符写入给定索引处的缓冲区。
- 参数:
index- 将写入字符的索引c- 要写入的字符值- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负数或不小于缓冲区的限制ReadOnlyBufferException- 如果这个缓冲区是只读的
-
get
相对体积get方法。此方法将字符从此缓冲区传输到给定的目标数组。如果缓冲区中剩余的字符少于满足请求所需的字符,即如果
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.lengthlength- 要写入给定数组的最大字符数;必须为非负且不大于dst.length - offset- 返回:
- 这个缓冲区
- 抛出:
BufferUnderflowException- 如果此缓冲区中剩余的字符少于length个IndexOutOfBoundsException- 如果offset和length参数的先决条件不成立
-
get
相对体积get方法。此方法将字符从此缓冲区传输到给定的目标数组。调用
src.get(a)形式的方法的行为与调用完全相同src.get(a, 0, a.length)
- 参数:
dst- 目标数组- 返回:
- 这个缓冲区
- 抛出:
BufferUnderflowException- 如果此缓冲区中剩余的字符少于length个
-
get
绝对散装get方法。此方法将
length个字符从此缓冲区传输到给定数组,从该缓冲区中的给定索引和数组中的给定偏移量开始。这个缓冲区的位置没有改变。调用
src.get(index, dst, offset, length)形式的此方法与以下循环具有完全相同的效果,除了它首先检查提供的参数的一致性并且它可能更有效:for (int i = offset, j = index; i < offset + length; i++, j++) dst[i] = src.get(j);- 参数:
index- 该缓冲区中的索引,将从中读取第一个字符;必须为非负且小于limit()dst- 目标数组offset- 要写入的第一个字符在数组中的偏移量;必须为非负且小于dst.lengthlength- 要写入给定数组的字符数;必须为非负且不大于limit() - index和dst.length - offset中的较小者- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index、offset和length参数的先决条件不成立- 自从:
- 13
-
get
绝对散装get方法。此方法将字符从此缓冲区传输到给定的目标数组。这个缓冲区的位置没有改变。调用
src.get(index, dst)形式的方法的行为与调用完全相同:src.get(index, dst, 0, dst.length)
- 参数:
index- 该缓冲区中的索引,将从中读取第一个字符;必须为非负且小于limit()dst- 目标数组- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负,不小于limit()或limit() - index < dst.length- 自从:
- 13
-
put
相对体积put方法(可选操作).此方法将给定源缓冲区中剩余的字符传输到此缓冲区中。如果源缓冲区中剩余的字符多于此缓冲区中的字符,即如果
src.remaining()>remaining(),则不传输任何字符并抛出BufferOverflowException。否则,此方法复制n=
src.remaining()从给定缓冲区到此缓冲区的字符,从每个缓冲区的当前位置开始。然后将两个缓冲区的位置递增n.换句话说,调用
dst.put(src)形式的方法与循环具有完全相同的效果while (src.hasRemaining()) dst.put(src.get());除了它首先检查此缓冲区中是否有足够的空间并且它可能更有效。如果此缓冲区和源缓冲区共享相同的后备数组或内存,则结果将好像源元素在写入此缓冲区之前首先复制到中间位置。- 参数:
src- 要从中读取字符的源缓冲区;不能是这个缓冲区- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果此缓冲区中的空间不足以容纳源缓冲区中的剩余字符IllegalArgumentException- 如果源缓冲区是这个缓冲区ReadOnlyBufferException- 如果这个缓冲区是只读的
-
put
绝对散装put方法(可选操作).此方法将
length个字符从给定的源缓冲区传输到此缓冲区,从源缓冲区中的给定offset和此缓冲区中的给定index开始。两个缓冲区的位置都没有改变。换句话说,调用
dst.put(index, src, offset, length)形式的方法与循环具有完全相同的效果
除了它首先检查提供的参数的一致性并且它可能更有效。如果此缓冲区和源缓冲区共享相同的后备数组或内存,则结果将好像源元素在写入此缓冲区之前首先复制到中间位置。for (int i = offset, j = index; i < offset + length; i++, j++) dst.put(j, src.get(i));- 参数:
index- 该缓冲区中第一个字符将被写入的索引;必须为非负且小于limit()src- 要从中读取字符的缓冲区offset- 要读取的第一个字符在源缓冲区中的索引;必须为非负且小于src.limit()length- 要从给定缓冲区读取的字符数;必须为非负且不大于limit() - index和src.limit() - offset中的较小者- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index、offset和length参数的先决条件不成立ReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 16
-
put
相对体积put方法(可选操作).此方法将字符从给定的源数组传输到此缓冲区。如果要从数组中复制的字符多于此缓冲区中保留的字符,即如果
length>remaining(),则不传输任何字符并抛出BufferOverflowException。否则,此方法将从给定数组中的
length个字符复制到此缓冲区,从数组中的给定偏移量开始,并在此缓冲区的当前位置。然后这个缓冲区的位置增加length。换句话说,调用
dst.put(src, off, len)形式的方法与循环具有完全相同的效果
除了它首先检查此缓冲区中是否有足够的空间并且它可能更有效。for (int i = off; i < off + len; i++) dst.put(src[i]);- 参数:
src- 要从中读取字符的数组offset- 要读取的第一个字符在数组中的偏移量;必须为非负且不大于src.lengthlength- 要从给定数组中读取的字符数;必须为非负且不大于src.length - offset- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足IndexOutOfBoundsException- 如果offset和length参数的先决条件不成立ReadOnlyBufferException- 如果这个缓冲区是只读的
-
put
相对体积put方法(可选操作).此方法将给定源字符数组的全部内容传输到此缓冲区中。调用
dst.put(a)形式的方法的行为与调用完全相同dst.put(a, 0, a.length)
- 参数:
src- 源数组- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足ReadOnlyBufferException- 如果这个缓冲区是只读的
-
put
绝对散装put方法(可选操作).此方法从给定数组中传输
length个字符,从数组中的给定偏移量和此缓冲区中的给定索引开始。这个缓冲区的位置没有改变。调用
dst.put(index, src, offset, length)形式的此方法与以下循环具有完全相同的效果,除了它首先检查提供的参数的一致性并且它可能更有效:for (int i = offset, j = index; i < offset + length; i++, j++) dst.put(j, src[i]);- 参数:
index- 该缓冲区中第一个字符将被写入的索引;必须为非负且小于limit()src- 要从中读取字符的数组offset- 要读取的第一个字符在数组中的偏移量;必须为非负且小于src.lengthlength- 要从给定数组中读取的字符数;必须为非负且不大于limit() - index和src.length - offset中的较小者- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index、offset和length参数的先决条件不成立ReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 13
-
put
绝对散装put方法(可选操作).此方法将字符从给定的源数组复制到此缓冲区中。这个缓冲区的位置没有改变。对
dst.put(index, src)形式的方法的调用与调用的行为完全相同:dst.put(index, src, 0, src.length);
- 参数:
index- 该缓冲区中第一个字符将被写入的索引;必须为非负且小于limit()src- 要从中读取字符的数组- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负,不小于limit()或limit() - index < src.lengthReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 13
-
put
相对体积put方法(可选操作).此方法将给定字符串中的字符传输到此缓冲区中。如果要从字符串中复制的字符数多于保留在此缓冲区中的字符数,即如果
end - start>remaining(),则不会传输任何字符并抛出BufferOverflowException。否则,此方法复制n=
end-start将给定字符串中的字符放入此缓冲区,从给定的start索引和此缓冲区的当前位置开始。这个缓冲区的位置然后递增n.换句话说,调用
dst.put(src, start, end)形式的方法与循环具有完全相同的效果
除了它首先检查此缓冲区中是否有足够的空间并且它可能更有效。for (int i = start; i < end; i++) dst.put(src.charAt(i));- 参数:
src- 要从中读取字符的字符串start- 要读取的第一个字符在字符串中的偏移量;必须为非负且不大于string.length()end- 要读取的最后一个字符在字符串中的偏移量加一;必须为非负且不大于string.length()- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足IndexOutOfBoundsException- 如果start和end参数的先决条件不成立ReadOnlyBufferException- 如果这个缓冲区是只读的
-
put
相对体积put方法(可选操作).此方法将给定源字符串的全部内容传输到此缓冲区中。对
dst.put(s)形式的方法的调用与调用的行为完全相同dst.put(s, 0, s.length())
- 参数:
src- 源字符串- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足ReadOnlyBufferException- 如果这个缓冲区是只读的
-
hasArray
public final boolean hasArray()告知此缓冲区是否由可访问的字符数组支持。如果此方法返回
true,则可以安全地调用array和arrayOffset方法。 -
array
public final char[] array()返回支持此缓冲区的字符数组(可选操作).对此缓冲区内容的修改将导致返回数组的内容被修改,反之亦然。
在调用此方法之前调用
hasArray方法,以确保此缓冲区具有可访问的后备数组。- 指定者:
array在类Buffer中- 返回:
- 支持此缓冲区的数组
- 抛出:
ReadOnlyBufferException- 如果此缓冲区由数组支持但为只读UnsupportedOperationException- 如果此缓冲区不受可访问数组的支持
-
arrayOffset
public final int arrayOffset()返回缓冲区第一个元素在此缓冲区的后备数组中的偏移量(可选操作).如果此缓冲区由数组支持,则缓冲区位置p对应数组索引p
arrayOffset()。在调用此方法之前调用
hasArray方法,以确保此缓冲区具有可访问的后备数组。- 指定者:
arrayOffset在类Buffer中- 返回:
- 缓冲区第一个元素在此缓冲区数组中的偏移量
- 抛出:
ReadOnlyBufferException- 如果此缓冲区由数组支持但为只读UnsupportedOperationException- 如果此缓冲区不受可访问数组的支持
-
position
设置此缓冲区的位置。如果标记已定义且大于新位置,则将其丢弃。 -
limit
设置此缓冲区的限制。如果位置大于新限制,则将其设置为新限制。如果标记已定义且大于新限制,则将其丢弃。 -
mark
在其位置设置此缓冲区的标记。 -
reset
将此缓冲区的位置重置为先前标记的位置。调用此方法既不会更改也不会丢弃标记的值。
-
clear
清除此缓冲区。位置设置为零,限制设置为容量,标记被丢弃。在使用一系列通道读取或之前调用此方法put填充此缓冲区的操作。例如:
buf.clear(); // Prepare buffer for reading in.read(buf); // Read data
这种方法实际上并没有擦除缓冲区中的数据,但它的命名就好像它确实擦除一样,因为它最常用于可能是这种情况的情况。
-
flip
翻转此缓冲区。限制设置为当前位置,然后位置设置为零。如果标记已定义,则将其丢弃。经过一系列通道读取或put操作,调用此方法来准备一系列通道写入或相关get操作。例如:
buf.put(magic); // Prepend header in.read(buf); // Read data into rest of buffer buf.flip(); // Flip buffer out.write(buf); // Write header + data to channel
在将数据从一个地方传输到另一个地方时,该方法通常与
compact方法结合使用。 -
rewind
倒带此缓冲区。位置设置为零,标记被丢弃。在一系列通道写入或之前调用此方法get操作,假设已经适当地设置了限制。例如:
out.write(buf); // Write remaining data buf.rewind(); // Rewind buffer buf.get(array); // Copy data into array
-
compact
压缩此缓冲区(可选操作).缓冲区当前位置与其限制之间的字符(如果有)被复制到缓冲区的开头。即索引处的字符p
position()被复制到索引零,索引处的字符p1 被复制到索引 1,依此类推,直到索引limit()- 1 处的字符被复制到索引nlimit()-1-p.缓冲区的位置然后设置为n+1个其限制设置为其容量。标记(如果已定义)将被丢弃。缓冲区的位置设置为复制的字符数,而不是零,因此调用此方法后可以立即调用另一个相关方法put方法。
- 返回:
- 这个缓冲区
- 抛出:
ReadOnlyBufferException- 如果这个缓冲区是只读的
-
isDirect
public abstract boolean isDirect()判断此 char 缓冲区是否是直接的。 -
hashCode
public int hashCode()返回此缓冲区的当前哈希码。char 缓冲区的散列码仅取决于其剩余元素;也就是说,基于从
position()到并包括limit()-1处的元素的元素。因为缓冲区哈希码依赖于内容,所以不建议使用缓冲区作为hash map或类似数据结构中的键,除非知道它们的内容不会改变。
-
equals
告知此缓冲区是否等于另一个对象。当且仅当两个字符缓冲区相等时,
它们具有相同的元素类型,
它们具有相同数量的剩余元素,并且
独立于它们的起始位置考虑的剩余元素的两个序列逐点相等。
字符缓冲区不等于任何其他类型的对象。
-
compareTo
将此缓冲区与另一个缓冲区进行比较。通过按字典顺序比较剩余元素的序列来比较两个 char 缓冲区,而不考虑每个序列在其相应缓冲区中的起始位置。成对的
char元素就像调用Character.compare(char,char)一样进行比较。字符缓冲区无法与任何其他类型的对象相提并论。
- 指定者:
compareTo在接口Comparable<CharBuffer>中- 参数:
that- 要比较的对象。- 返回:
- 负整数、零或正整数,因为此缓冲区小于、等于或大于给定缓冲区
-
mismatch
查找并返回此缓冲区与给定缓冲区之间第一个不匹配的相对索引。该索引与每个缓冲区的position相关,并且将在 0(含)到每个缓冲区中的remaining元素(不包括)中较小的范围内。如果两个缓冲区共享一个公共前缀,则返回的索引是公共前缀的长度,因此两个缓冲区在各自缓冲区内的该索引处存在不匹配。如果一个缓冲区是另一个缓冲区的适当前缀,则返回的索引是每个缓冲区中剩余元素中较小的一个,因此该索引仅对剩余元素数量较多的缓冲区有效。否则,不存在不匹配。
- 参数:
that- 要测试与此缓冲区不匹配的字节缓冲区- 返回:
- 此缓冲区与给定缓冲区之间第一个不匹配的相对索引,否则如果不匹配则为 -1。
- 自从:
- 11
-
toString
返回包含此缓冲区中的字符的字符串。结果字符串的第一个字符将是此缓冲区位置的字符,而最后一个字符将是索引
limit()- 1 处的字符。调用此方法不会更改缓冲区的位置。- 指定者:
toString在接口CharSequence中- 重写:
toString在类Object中- 返回:
- 指定字符串
-
length
public final int length()返回此字符缓冲区的长度。当看作一个字符序列时,字符缓冲区的长度就是位置(含)和限制(不含)之间的字符数;也就是说,它相当于
remaining()。- 指定者:
length在接口CharSequence中- 返回:
- 这个字符缓冲区的长度
-
isEmpty
public final boolean isEmpty()如果此字符缓冲区为空,则返回true。- 指定者:
isEmpty在接口CharSequence中- 返回:
true如果还有0个剩余字符,否则false- 自从:
- 15
-
charAt
public final char charAt(int index) 读取相对于当前位置的给定索引处的字符。- 指定者:
charAt在接口CharSequence中- 参数:
index- 要读取的字符的索引,相对于位置;必须为非负且小于remaining()- 返回:
-
索引
position() + index处的字符 - 抛出:
IndexOutOfBoundsException- 如果index的先决条件不成立
-
subSequence
创建一个新的字符缓冲区,表示该缓冲区相对于当前位置的指定子序列。新缓冲区将共享此缓冲区的内容;也就是说,如果这个缓冲区的内容是可变的,那么对一个缓冲区的修改将导致另一个缓冲区被修改。新缓冲区的容量将是该缓冲区的容量,其位置将为
position()+start,其限制将为position()+end,其字节顺序将与该缓冲区的字节顺序相同。当且仅当此缓冲区是直接的时,新缓冲区将是直接的,并且当且仅当此缓冲区是只读的时,它将是只读的。- 指定者:
subSequence在接口CharSequence中- 参数:
start- 子序列中第一个字符相对于当前位置的索引;必须为非负且不大于remaining()end- 子序列中最后一个字符之后的字符相对于当前位置的索引;必须不小于start且不大于remaining()- 返回:
- 新的字符缓冲区
- 抛出:
IndexOutOfBoundsException- 如果start和end的先决条件不成立
-
append
将指定的字符序列追加到此缓冲区(可选操作).对
dst.append(csq)形式的方法的调用与调用的行为完全相同dst.put(csq.toString())
根据字符序列
csq的toString规范,可能不会附加整个序列。例如,调用字符缓冲区的toString方法将返回一个子序列,其内容取决于缓冲区的位置和限制。- 指定者:
append在接口Appendable中- 参数:
csq- 要追加的字符序列。如果csq是null,那么四个字符"null"被追加到这个字符缓冲区。- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足ReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 1.5
-
append
将指定字符序列的子序列追加到此缓冲区(可选操作).当
csq不是null时调用dst.append(csq, start, end)形式的方法,其行为与调用完全相同dst.put(csq.subSequence(start, end).toString())
- 指定者:
append在接口Appendable中- 参数:
csq- 将追加子序列的字符序列。如果csq是null,那么字符将被追加,就好像csq包含四个字符"null"一样。start- 子序列中第一个字符的索引end- 子序列中最后一个字符之后的字符的索引- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足IndexOutOfBoundsException- 如果start或end为负,则start大于end,或者end大于csq.length()ReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 1.5
-
append
将指定的字符追加到此缓冲区(可选操作).dst.append(c)形式的此方法的调用与调用的行为完全相同dst.put(c)
- 指定者:
append在接口Appendable中- 参数:
c- 要追加的 16 位字符- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足ReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 1.5
-
order
检索此缓冲区的字节顺序。通过分配或包装现有
char数组创建的字符缓冲区的字节顺序是底层硬件的native order。创建为字节缓冲区的 看法 的字符缓冲区的字节顺序是创建视图时字节缓冲区的字节顺序。- 返回:
- 此缓冲区的字节顺序
-