java.nio.ByteBuffer类的duplicate()方法用于创建共享该缓冲区内容的新字节缓冲区。

新缓冲区的内容就是该缓冲区的内容。对该缓冲区内容的更改将在新缓冲区中可见,反之亦然;这两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的容量,限制,位置和标记值将与此缓冲区相同。当且仅当该缓冲区是直接缓冲区时,新缓冲区才是直接缓冲区;当且仅当该缓冲区是只读缓冲区时,新缓冲区才是只读缓冲区。

用法:

public abstract ByteBuffer duplicate()

返回值:此方法返回承载先前字节缓冲区内容的新字节缓冲区。

下面是说明duplicate()方法的示例:

范例1:使用直接ByteBuffer

// Java program to demonstrate

// duplicate() method

// Using direct ByteBuffer

import java.nio.*;

import java.util.*;

public class GFG {

public static void main(String[] args)

{

// Declaring the capacity of the ByteBuffer

int capacity = 4;

// Creating the ByteBuffer

try {

// creating object of ByteBuffer

// and allocating size capacity

ByteBuffer bb1 = ByteBuffer.allocate(capacity);

// putting the int to byte typecast value value in ByteBuffer

bb1.put((byte)20);

bb1.put((byte)30);

bb1.put((byte)40);

bb1.put((byte)50);

bb1.rewind();

// print the Original ByteBuffer

System.out.println("Original ByteBuffer:  "

+ Arrays.toString(bb1.array()));

// Creating a duplicate copy of ByteBuffer

// using duplicate() method

ByteBuffer bb2 = bb1.duplicate();

// print the duplicate copy of ByteBuffer

System.out.print("\nDuplicate ByteBuffer: "

+ Arrays.toString(bb2.array()));

}

catch (IllegalArgumentException e) {

System.out.println("Exception thrown : " + e);

}

catch (ReadOnlyBufferException e) {

System.out.println("Exception thrown : " + e);

}

}

}

输出:

Original ByteBuffer: [20, 30, 40, 50]

Duplicate ByteBuffer: [20, 30, 40, 50]

范例2:使用只读ByteBuffer

// Java program to demonstrate

// duplicate() method

// using read-only ByteBuffer

import java.nio.*;

import java.util.*;

public class GFG {

public static void main(String[] args)

{

// Declaring the capacity of the ByteBuffer

int capacity = 4;

// Creating the ByteBuffer

try {

// creating object of ByteBuffer

// and allocating size capacity

ByteBuffer bb1 = ByteBuffer.allocate(capacity);

// putting the int to byte typecast value in ByteBuffer

bb1.put((byte)20);

bb1.put((byte)30);

bb1.put((byte)40);

bb1.put((byte)50);

bb1.rewind();

// print the Original ByteBuffer

System.out.println("Original ByteBuffer:  "

+ Arrays.toString(bb1.array()));

// Creating a read-only copy of ByteBuffer

// using asReadOnlyBuffer() method

ByteBuffer readonly = bb1.asReadOnlyBuffer();

// print the read-only copy of ByteBuffer

System.out.print("\nRead-only ByteBuffer:  ");

while (readonly.hasRemaining())

System.out.print(readonly.get() + ", ");

System.out.println("");

// Rewinding the readonly ByteBuffer

readonly.rewind();

// Creating a duplicate copy of ByteBuffer

// using duplicate() method

ByteBuffer bb2 = readonly.duplicate();

// print the duplicate copy of ByteBuffer

System.out.print("\nDuplicate copy of read-only ByteBuffer:  ");

while (bb2.hasRemaining())

System.out.print(bb2.get() + ", ");

System.out.println("");

}

catch (IllegalArgumentException e) {

System.out.println("Exception thrown : " + e);

}

catch (ReadOnlyBufferException e) {

System.out.println("Exception thrown : " + e);

}

}

}

输出:

Original ByteBuffer: [20, 30, 40, 50]

Read-only ByteBuffer: 20, 30, 40, 50,

Duplicate copy of read-only ByteBuffer: 20, 30, 40, 50,

java的duplicate用法_Java ByteBuffer duplicate()用法及代码示例相关推荐

  1. java 四则混合运算_Java实现四则混合运算代码示例

    使用栈来实现,可以处理运算优先级. 使用自然四则运算表达式即可,如:4+(3*(3-1)+2)/2.无需把表达式先转换为逆波兰等形式. package com.joshua.cal; import j ...

  2. java四则混合运算_Java实现四则混合运算代码示例

    使用栈来实现,可以处理运算优先级. 使用自然四则运算表达式即可,如:4+(3*(3-1)+2)/2.无需把表达式先转换为逆波兰等形式. package com.joshua.cal; import j ...

  3. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

  4. java isempty用法_Java ArrayList isEmpty() 使用方法及示例

    Java ArrayList isEmpty() 使用方法及示例 Java ArrayList isEmpty()方法用于检查arraylist是否为空. 该isEmpty()方法的语法为: arra ...

  5. java并发编程代码示例_java并发编程之同步器代码示例

    java并发编程之同步器代码示例 发布时间:2020-09-08 16:53:41 来源:脚本之家 阅读:58 作者:Blessing_H 同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作 ...

  6. java touch创建文件_Java FileUtils.touch方法代碼示例

    本文整理匯總了Java中org.apache.commons.io.FileUtils.touch方法的典型用法代碼示例.如果您正苦於以下問題:Java FileUtils.touch方法的具體用法? ...

  7. java使用drawtext重叠_Java Graphics.drawText方法代碼示例

    本文整理匯總了Java中org.eclipse.draw2d.Graphics.drawText方法的典型用法代碼示例.如果您正苦於以下問題:Java Graphics.drawText方法的具體用法 ...

  8. java nio keyiterator.remove()_Java SelectionKey.isValid方法代碼示例

    本文整理匯總了Java中java.nio.channels.SelectionKey.isValid方法的典型用法代碼示例.如果您正苦於以下問題:Java SelectionKey.isValid方法 ...

  9. java结束全部操作代码_Java创建与结束线程代码示例

    这篇文章主要介绍了Java创建与结束线程代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考. 本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程 ...

  10. java创建线程代码_Java创建与结束线程代码示例

    本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程同步.调度.线程池等内容将会在后续章节中逐步深入. 创建线程 创建普通线程有两种方式,继承Thread类 ...

最新文章

  1. Python3+Selenium3 之滚动条操作实例与单选框的实例演示
  2. N-MOS 2N7002晶体管
  3. Mybatis系列(三):Mybatis实现关联表查询
  4. Linux shell编程(二):shell语法
  5. java笔记4-类型转换
  6. linux通过进程名查找进程,Linux下通过进程名获得进程号
  7. [vue] 写出多种定义组件模板的方法
  8. 基于or1200最小sopc系统搭建(一)--搭建及仿真(DE2,DE2-70)
  9. android 8.1.0怎么截屏,vivo Z1i怎么截屏?4种vivo Z1i截图方法
  10. 矩阵等式 matrix identity(numpy仿真)
  11. 利用HtmlAgilityPack库进行HTML数据抓取
  12. UEFI+GPT双硬盘安装Win10+Ubuntu16.04双系统
  13. php微信公众号图文回复,微信公众号回复图文消息——2018年6月6日
  14. 滴滴校招编程题-田径运动会比赛排名
  15. 幸存与否 ——泰坦尼克号沉船事件数据分析*
  16. 使用css设置div块实现阴影呈现3d效果
  17. C++:构造函数以及析构函数
  18. opengl对图像进行腐蚀和膨胀
  19. PyQT5 (四十三) 在 QTableWidget 表格中设置单元格的字体和颜色 的案例
  20. windows10 自带的office突然无缘故被卸载了

热门文章

  1. CF120F Spiders 题解
  2. 李标明新书《生命的觉醒》发布
  3. 高校自主招生计算机要求,2019各高校自主招生报名条件及考核内容
  4. 【牛客网】马三来刷题之串的模式匹配
  5. unity不规则点击_【Unity游戏开发】UGUI不规则区域点击的实现
  6. 软考高项-项目管理师知识点整合
  7. 区块链医疗平台搭建 高效的医疗管理生态服务体系
  8. Operator基础:3: 使用Operator SDK创建Operator
  9. My Sixteenth Page - 四数相加 - By Nicolas
  10. ios 强制横屏大总结