一、概述

java.lang.Object
java.nio.Buffer
java.nio.ShortBuffer
public abstract class ShortBuffer extends Buffer implements Comparable<ShortBuffer>

short 缓冲区。

此类定义了 short 缓冲区上的四类操作:

  • 读写单个 short 的绝对和相对 get
    put 方法。

  • 将此缓冲区的连续 short 序列传输到数组中的相对批量 get 方法。

  • 将 short 数组或其它 short 缓冲区中的连续 short 序列传输到此缓冲区的相对批量 put 方法;以及

  • short 缓冲区的 compactingduplicating
    slicing 方法。

    short 缓冲区能够通过 allocation 创建。此方法通过
    wrapping 将一个现有 short 数组包装到缓冲区中来为缓冲区内容分配空间,或者通过创建现有字节缓冲区的视图来创建。

    像字节缓冲区一样,short 缓冲区要么是直接的,要么是非直接的。通过此类的
    wrap 方法创建的 short 缓冲区将是非直接的。

    当且仅当字节缓冲区本身为直接时,作为字节缓冲区的视图创建的 short 缓冲区才是直接的。通过调用
    isDirect 方法能够确定 short 缓冲区是否为直接的。

    指定此类中的方法(它们不返回其它值)。以返回这些方法被调用时所在的缓冲区。这同意对方法调用进行链接。

    二、概述

    1、public static ShortBuffer
    allocate(int capacity)

    分配新的 short 缓冲区。

    新缓冲区的位置将为零,其界限将为其容量。其标记是没有定义的。它将具有一个底层实现数组。且其数组偏移量将为零。

    參数:
    capacity - 新缓冲区的容量。以 short 为单位
    返回:
    新的 short 缓冲区
    抛出:
    IllegalArgumentException - 假设
    capacity 为负整数

    2、public static ShortBuffer
    wrap(short[] array,  int offset,int length)

    将 short 数组包装到缓冲区中。

    给定的 short 数组将支持新缓冲区。即缓冲区改动将导致数组改动,反之亦然。新缓冲区的容量将为 array.length,其位置将为
    offset
    。其界限将为 offset + length,其标记是没有定义的。其底层实现数组将为给定数组,而且其数组偏移量将为零。

    參数:
    array - 支持新缓冲区的数组
    offset - 要使用的子数组的偏移量;必须为非负且不大于 array.length

    将新缓冲区的位置设置为此值。

    length - 要使用的子数组的长度。必须为非负且不大于 array.length - offset。将新缓冲区的界限设置为
    offset + length
    返回:
    新的 short 缓冲区
    抛出:
    IndexOutOfBoundsException - 假设关于
    offsetlength 參数的前提不成立

    3、public static ShortBuffer
    wrap(short[] array)

    将 short 数组包装到缓冲区中。

    给定的 short 数组将支持新缓冲区;即缓冲区改动将导致数组改动,反之亦然。新缓冲区的容量和界限将为 array.length。其位置将为零。其标记是没有定义的。其底层实现数组将为给定数组,而且其数组偏移量将为零。

    參数:
    array - 实现此缓冲区的数组
    返回:
    新的 short 缓冲区

    4、public abstract ShortBuffer
    slice()

    创建新的 short 缓冲区。其内容是此缓冲区内容的共享子序列。

    新缓冲区的内容将从此缓冲区的当前位置開始。此缓冲区内容的更改在新缓冲区中是可见的,反之亦然。这两个缓冲区的位置、界限和标记值是相互独立的。

    新缓冲区的位置将为零。其容量和界限将为此缓冲区中所剩余的 short 数量,其标记是没有定义的。

    当且仅当此缓冲区为直接时,新缓冲区才是直接的,当且仅当此缓冲区为仅仅读时,新缓冲区才是仅仅读的。

    返回:
    新的 short 缓冲区

    5、public abstract ShortBuffer
    duplicate()

    创建共享此缓冲区内容的新的 short 缓冲区。

    新缓冲区的内容将为此缓冲区的内容。此缓冲区内容的更改在新缓冲区中是可见的,反之亦然;这两个缓冲区的位置、界限和标记值是相互独立的。

    新缓冲区的容量、界限、位置和标记值将与此缓冲区同样。

    当且仅当此缓冲区为直接时。新缓冲区才是直接的,当且仅当此缓冲区为仅仅读时。新缓冲区才是仅仅读的。

    返回:
    新的 short 缓冲区

    6、public abstract ShortBuffer
    asReadOnlyBuffer()

    创建共享此缓冲区内容的新的仅仅读 short 缓冲区。

    新缓冲区的内容将为此缓冲区的内容。此缓冲区内容的更改在新缓冲区中是可见的。但新缓冲区将是仅仅读的而且不同意改动共享内容。两个缓冲区的位置、界限和标记值是相互独立的。

    新缓冲区的容量、界限、位置和标记值将与此缓冲区同样。

    假设此缓冲区本身是仅仅读的。则此方法与 duplicate 方法全然同样。

    返回:
    新的仅仅读 short 缓冲区

    7、public abstract short get()

    相对 get 方法。

    读取此缓冲区当前位置的 short,然后该位置递增。

    返回:
    缓冲区当前位置的 short
    抛出:
    BufferUnderflowException - 假设缓冲区当前位置不小于其界限

    8、public abstract ShortBuffer
    put(short s)

    相对 put 方法(可选操作)

    将给定 short 写入此缓冲区的当前位置,然后该位置递增。

    參数:
    s - 要写入的 short
    返回:
    此缓冲区
    抛出:
    BufferOverflowException - 假设此缓冲区的当前位置不小于界限
    ReadOnlyBufferException - 假设此缓冲区是仅仅读的

    9、public abstract short get(int index)

    绝对 get 方法。读取给定索引处的 short。

    參数:
    index - 将读取 short 的位置的索引
    返回:
    给定索引处的 short
    抛出:
    IndexOutOfBoundsException - 假设
    index 为负或不小于缓冲区界限

    10、public abstract ShortBuffer
    put(int index, short s)

    绝对 put 方法(可选操作)

    将给定 short 写入此缓冲区的给定索引处。

    參数:
    index - 将在该位置写入 short
    s - 要写入的 short 值
    返回:
    此缓冲区
    抛出:
    IndexOutOfBoundsException - 假设
    index 为负或不小于缓冲区界限
    ReadOnlyBufferException - 假设此缓冲区是仅仅读的

    11、public ShortBuffer
    get(short[] dst,int offset,int length)

    相对批量 get 方法。

    此方法将此缓冲区的 short 传输到给定的目标数组中。

    假设缓冲区中剩余的 short 少于满足请求所需的 short,即假设 length > remaining(),则不传输 short 且抛出
    BufferUnderflowException

    否则,此方法将此缓冲区中的 length 个 short 拷贝到给定数组中,从此缓冲区的当前位置和数组中的给定偏移量位置開始复制。然后此缓冲区的位置递增
    length

    换句话说,调用此方法的形式为 src.get(dst, off, len),效果与下面循环语句全然同样:

         for (int i = off; i < off + len; i++)
    dst[i] = src.get();

    差别在于它首先检查此缓冲区中是否具有足够的 short。这样可能效率更高。

    參数:
    dst - 要写入 short 的数组
    offset - 要写入的第一个 short 在数组中的偏移量;必须为非负且不大于 dst.length
    length - 要写入给定数组中的 short 的最大数量。必须为非负且不大于 dst.length - offset
    返回:
    此缓冲区
    抛出:
    BufferUnderflowException - 假设此缓冲区中的剩余 short 少于
    length
    IndexOutOfBoundsException - 假设关于
    offsetlength 參数的前提不成立

    12、public ShortBuffer
    get(short[] dst)

    相对批量 get 方法。

    此方法将此缓冲区的 short 传输到给定的目标数组中。调用此方法的形式为 src.get(a),该调用与下面调用全然同样:

         src.get(a, 0, a.length) 
    返回:
    此缓冲区
    抛出:
    BufferUnderflowException - 假设此缓冲区中的剩余 short 少于
    length

    13、public ShortBuffer
    put(ShortBuffer src)

    相对批量 put 方法(可选操作)

    此方法将给定源缓冲区中的剩余 short 传输到此缓冲区中。假设源缓冲区中的剩余 short 多于此缓冲区中的剩余 short 空间,即 src.remaining() > remaining(),则不传输 short 且抛出
    BufferOverflowException

    否则,此方法将给定缓冲区中的 n = src.remaining() 个 short 拷贝到此缓冲区中,从每一个缓冲区的当前位置開始复制。然后这两个缓冲区的位置均递增
    n

    换句话说。调用此方法的形式为 dst.put(src),效果与下面循环语句全然同样:

         while (src.hasRemaining())
    dst.put(src.get());

    差别在于它首先检查此缓冲区中是否有足够空间。这样可能效率更高。

    參数:
    src - 要从中读取 short 的源缓冲区;不能为此缓冲区
    返回:
    此缓冲区
    抛出:
    BufferOverflowException - 假设对于源缓冲区中剩余的 short,此缓冲区没有足够空间
    IllegalArgumentException - 假设源缓冲区是此缓冲区
    ReadOnlyBufferException - 假设此缓冲区是仅仅读的

    14、public ShortBuffer
    put(short[] src, int offset,int length)

    相对批量 put 方法(可选操作)

    此方法将给定源数组中的 short 传输到此缓冲区中。假设要从数组复制的 short 多于此缓冲区中的剩余 short 空间。即假设 length > remaining(),则不传输 short 且抛出
    BufferOverflowException

    否则,此方法将给定数组中的 length 个 short 拷贝到此缓冲区中,从数组中给定偏移量位置和此缓冲区的当前位置開始复制。

    然后此缓冲区的位置递增
    length

    换句话说,调用此方法的形式为 dst.put(src, off, len),效果与下面循环语句全然同样:

         for (int i = off; i < off + len; i++)
    dst.put(a[i]);

    差别在于它首先检查此缓冲区中是否有足够空间。这样可能效率更高。

    參数:
    src - 要从中读取 short 的数组
    offset - 要读取的第一个 short 在数组中的偏移量;必须为非负且不大于 array.length
    length - 要从给定数组读取的 short 数量;必须为非负且不大于 array.length - offset
    返回:
    此缓冲区
    抛出:
    BufferOverflowException - 假设此缓冲区没有足够空间
    IndexOutOfBoundsException - 假设关于
    offsetlength 參数的前提不成立
    ReadOnlyBufferException - 假设此缓冲区是仅仅读的

    15、public final ShortBuffer
    put(short[] src)

    相对批量 put 方法(可选操作)

    此方法将给定源 short 数组中的全部内容传输到此缓冲区中。调用此方法的形式为 dst.put(a),该调用与下面调用全然同样:

         dst.put(a, 0, a.length) 
    返回:
    此缓冲区
    抛出:
    BufferOverflowException - 假设此缓冲区没有足够空间
    ReadOnlyBufferException - 假设此缓冲区是仅仅读的

    16、public final boolean hasArray()

    推断是否可通过一个可訪问的 short 数组实现此缓冲区。

    假设此方法返回 true,则能够安全地调用 array
    arrayOffset 方法。

    指定者:
    Buffer 中的
    hasArray
    返回:
    当且仅当存在实现此缓冲区的数组,而且此缓冲区不是仅仅读缓冲区时,返回 true

    17、public final short[] array()

    返回实现此缓冲区的 short 数组(可选操作)

    此缓冲区的内容改动将导致返回的数组内容改动。反之亦然。

    调用此方法之前要调用 hasArray 方法,以确保此缓冲区具有可訪问的底层实现数组。

    指定者:
    Buffer 中的
    array
    返回:
    实现此缓冲区的数组
    抛出:
    ReadOnlyBufferException - 假设存在实现此缓冲区的数组。但缓冲区是仅仅读的
    UnsupportedOperationException - 假设不存在某个可訪问的数组实现此缓冲区

    18、public final int arrayOffset()

    返回此缓冲区的第一个元素在缓冲区的底层实现数组中的偏移量(可选操作)

    假设存在实现此缓冲区的数组,则缓冲区位置 p 相应于数组索引 p + arrayOffset()

    调用此方法之前要调用 hasArray 方法,以确保此缓冲区具有可訪问的底层实现数组。

    指定者:
    Buffer 中的
    arrayOffset
    返回:
    此缓冲区的第一个元素在缓冲区数组中的偏移量
    抛出:
    ReadOnlyBufferException - 假设存在实现此缓冲区的数组。但缓冲区是仅仅读的
    UnsupportedOperationException - 假设不存在某个可訪问的数组实现此缓冲区

    19、public abstract ShortBuffer
    compact()

    压缩此缓冲区(可选操作)

    将缓冲区当前位置和界限之间的 short(假设有)拷贝到缓冲区的開始处。即将索引 p = position() 处的 short 拷贝到索引 0 处,将索引
    p + 1 处的 short 拷贝到索引 1 处,依此类推,直到将索引 limit() - 1 处的 short 拷贝到索引
    n
     = limit() - 1 - p 处。

    然后将缓冲区的位置设置为 n+1,并将其界限设置为其容量。假设已定义了标记。则丢弃它。

    将缓冲区的位置设置为复制的 short 的数量,而不是零,以便调用此方法后能够紧接着调用还有一个相对 put 方法。

    返回:
    此缓冲区
    抛出:
    ReadOnlyBufferException - 假设此缓冲区是仅仅读的

    20、public abstract boolean
    isDirect()

    推断此 short 缓冲区是否为直接的。

    指定者:
    Buffer 中的
    isDirect
    返回:
    当且仅当此缓冲区为直接时。返回 true

    21、public String
    toString()  返回总结了此缓冲区状态的字符串。

    返回:一个总结字符串

    22、public int hashCode()

    返回此缓冲区的当前哈希码。

    short 缓冲区的哈希码仅仅取决于其剩余元素;即取决于从 position() 開始一直到(包含) limit() - 1 处的元素。

    由于缓冲区哈希码与内容有关,因此建议不要在哈希映射或类似数据结构中将缓冲区用作键,除非知道它们的内容不会发生更改。

    覆盖:
    Object 中的
    hashCode
    返回:
    此缓冲区的当前哈希码

    23、public boolean equals(Object ob)

    推断此缓冲区是否与还有一个对象同样。

    两个 short 缓冲区是同样的。当且仅当:

    1. 它们具有同样的元素类型,

    2. 它们具有同样数量的剩余元素,而且

    3. 两个剩余元素序列(与它们的起始位置无关)逐点同样。

    short 缓冲区与不论什么其它类型的对象都不同。

    覆盖:
    Object 中的
    equals
    參数:
    ob - 此缓冲区要比較的对象
    返回:
    当且仅当此缓冲区与给定对象同样时,返回 true

    24、public int compareTo(ShortBuffer that)

    将此缓冲区与还有一个缓冲区进行比較。

    比較两个 short 缓冲区的方法是按字典顺序比較它们的剩余元素序列,而不考虑每一个序列在其相应缓冲区中的起始位置。

    short 缓冲区不能与不论什么其它类型的对象进行比較。

    指定者:
    接口 Comparable<ShortBuffer> 中的
    compareTo
    參数:
    that - 要比較的对象。
    返回:
    假设此缓冲区小于、等于或大于给定缓冲区。则对应返回负整数、零或正整数

    25、public abstract ByteOrder
    order()

    获取此缓冲区的字节顺序。

    通过分配或通过包装现有 short 数组而创建的 short 缓冲区的字节顺序是底层硬件的本机顺序

    作为字节缓冲区的视图而创建的 short 缓冲区的字节顺序是创建视图时字节缓冲区的字节顺序。

    返回:
    此缓冲区的字节顺序

  • java中的ShortBuffer的更多相关文章

    1. Java中Comparable和Comparator你知多少?

      前言: 我喜欢这种遨游在Java的世界里,精心研究学习新鲜事物的感觉,即便再小再细再微不足道的东西,也让我乐此不疲,同时我也更愿意将我所会的东西分享出来供大家学习以及方便自己日后回顾.好了,闲话不多说 ...

    2. Java NIO之Java中的IO分类

      前言 前面两篇文章(Java NIO之理解I/O模型(一).Java NIO之理解I/O模型(二))介绍了,IO的机制,以及几种IO模型的内容,还有涉及到的设计模式.这次要写一些更贴近实际一些的内容了 ...

    3. JAVA中的NIO (New IO)

      简介 标准的IO是基于字节流和字符流进行操作的,而JAVA中的NIO是基于Channel和Buffer进行操作的. 传统IO graph TB; 字节流 --> InputStream; 字节流 ...

    4. Java中的IO、NIO、File、BIO、AIO详解

      java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?         Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包 ...

    5. java中的锁

      java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...

    6. java中的字符串相关知识整理

      字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

    7. Java中的Socket的用法

                                     Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

    8. java中Action层、Service层和Dao层的功能区分

      Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...

    9. Java中常用集合操作

      一.Map 名值对存储的. 常用派生类HashMap类 添加: put(key,value)往集合里添加数据 删除: clear()删除所有 remove(key)清除单个,根据k来找 获取: siz ...

    随机推荐

    1. CAD使用SetxDataString写数据(com接口)

      主要用到函数说明: MxDrawEntity::SetxDataString 写一个字符串扩展数据,详细说明如下: 参数 说明 [in] BSTR val 字符串值 szAppName 扩展数据名称 ...

    2. ubuntu 12.04 配置iscsi共享及挂载iscsi共享

      一.配置ubuntu 下iscsi下的target 1.配置iscsi-target: sudo apt-get install iscsi* 2.配置一个简单的iscsi target: iscsi ...

    3. 关于nested exception is org.apache.ibatis.binding.BindingException:Parameter '***' not found报错解决

      几天晚上遇到的奇怪的问题  传入的参数名一直没有变   但是从mapper到xml似乎有一个找不到参数的报错,实际上只要在Mapper接口形参前加“@Param(“形参名称”)”就可以了

    4. 如何把datetime类型字段修改为int类型

      如何把datetime类型字段修改为int类型 我有一个表为:table1 其中有一个datetime类型的字段  a    现在我想我想把字段a的类型改为int类型 当我执行以下命令时报如下的错误a ...

    5. jquery的$().each,$.each的区别02

      在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...

    6. iphone X 的适配

      <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

    7. 51nod 1551 集合交易 最大权闭合子图

      题意: 市场中有n个集合在卖.我们想买到满足以下要求的一些集合,所买到集合的个数要等于所有买到的集合合并后的元素的个数. 每个集合有相应的价格,要使买到的集合花费最小. 这里我们的集合有一个特点:对于 ...

    8. 笔试算法题(29):判断元素范围1到N的数组是否有重复数字 & 计算整数的7倍

      出题:一个长度为N的数组,其中的元素取值范围是1到N,要求快速判断数组是否存在重复数字: 分析: 解法1:如果N个元素的范围都是在1到N,所以如果没有重复元素,则每一个位置恰好可以对应数组中的一个元素 ...

    9. Centos6.8 安装mongo3.6以及权限配置和开启外网链接

      目录 安装环境和版本说明,以及参考文档链接 安装MongoDB数据库 运行MongoDB数据库 删除卸载MongoDB 配置MongoDB管理员用户 修改配置文件,允许外网链接 安装配置完成,使用Ro ...

    10. leds-gpio driver 续1

      在上文中分析了gpio-led platform_device是如何定义并注册的. 那么gpio-led platform_device 和 gpio-led platform_driver是如何匹配 ...