缓冲区和Buffer

import java.nio.IntBuffer;

//=================================================
// File Name : IntBuffer_demo
//------------------------------------------------------------------------------
// Author : Common //主类
//Function : IntBuffer_demo
public class IntBuffer_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
IntBuffer buf = IntBuffer.allocate(10); //开辟10个大小的缓冲区
System.out.print("1.写入数据之前的position、limit和capacity");
System.out.println("position="+buf.position()+"、limit="+buf.limit()+"、capacity="+buf.capacity());
int temp[] = {3,5,7}; //定义整型数组
buf.put(3); //向缓冲区写入数据
buf.put(temp); //向缓冲区中写入一组数据
System.out.print("2.写入数据之后的position、limit和capacity");
System.out.println("position="+buf.position()+"、limit="+buf.limit()+"、capacity="+buf.capacity());
buf.flip(); //重设缓冲区,改变指针
System.out.print("3.准备输出数据时的position、limit和capacity");
System.out.println("position="+buf.position()+"、limit="+buf.limit()+"、capacity="+buf.capacity());
while(buf.hasRemaining()){
int x = buf.get();
System.out.print(x+"、");
}
} }

创建子缓冲区

import java.nio.IntBuffer;

//=================================================
// File Name : IntBuffer_demo
//------------------------------------------------------------------------------
// Author : Common //主类
//Function : IntBuffer_demo
public class IntBuffer_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根 IntBuffer buf = IntBuffer.allocate(10); //开辟10个大小的缓冲区
IntBuffer sub = null; //定义缓冲区对象
for(int i=0;i<10;i++){
buf.put(2*i+1);
}
buf.position(2);
buf.limit(6);
sub = buf.slice(); //开辟子缓冲区
for(int i=0;i<sub.capacity();i++){
int temp = sub.get(i);
sub.put(temp-1);
}
buf.flip(); //重设缓冲区
buf.limit(buf.capacity()); //设置limit
System.out.println("主缓冲区中的内容:");
while(buf.hasRemaining()){
int x = buf.get(); //取出当前内容
System.out.print(x+"、");
}
} }

import java.nio.IntBuffer;

//=================================================
// File Name : IntBuffer_demo
//------------------------------------------------------------------------------
// Author : Common //主类
//Function : IntBuffer_demo
public class IntBuffer_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根 IntBuffer buf = IntBuffer.allocate(10); //开辟10个大小的缓冲区
IntBuffer read = null; //定义缓冲区对象
for(int i=0;i<10;i++){
buf.put(2*i+1);
}
read = buf.asReadOnlyBuffer(); //创建只读缓冲区
buf.flip(); //重设缓冲区
System.out.println("主缓冲区中的内容:");
while(buf.hasRemaining()){
int x = buf.get(); //取出当前内容
System.out.print(x+"、");
}
System.out.println();
read.put(30); //错误,不可写
} }

Java——新IO 缓冲区与Buffer的更多相关文章

  1. Java 新IO

       NIO提供全新的底层I/O模型.与最初的java.io包中面向流(stream-oriented)概念不同,NIO采用了面向块的概念(block-oriented).在尽可能的情况下,I/O的操 ...

  2. Java -- 新IO -- 目录

    20.1 Java 新IO简介 20.2 缓冲区与Buffer 例:演示缓冲区的操作流程 Class : IntBufferDemo01 20.2.2 深入缓冲区操作 20.2.3 创建子缓冲区 20 ...

  3. Java——新IO 通道

    import java.io.File; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.ch ...

  4. 怎样获取java新IO的Path文件大小

    import org.junit.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file. ...

  5. JAVA(六)数据库/网络编程/新IO

    成鹏致远 | lcw.cnblog.com |2014-02-05 数据库 1.JDBC概述 JDBC(Java Database Connectivity,Java数据库连接)提供了一种与平台无关的 ...

  6. JAVA NIO学习二:通道(Channel)与缓冲区(Buffer)

    今天是2018年的第三天,真是时光飞逝,2017年的学习计划还没有学习完成,因此继续开始研究学习,那么上一节我们了解了NIO,那么这一节我们进一步来学习NIO相关的知识.那就是通道和缓冲区.Java ...

  7. Java NIO3:缓冲区Buffer

    在上一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如 ...

  8. java 21 - 15 新IO流 NIO

    1:JDK4  新IO要了解的类 Buffer(缓冲),Channer(通道) 2:JDK7  要了解的新IO类 Path:与平台无关的路径. Paths:包含了返回Path的静态方法. public ...

  9. Java NIO (二) 缓冲区(Buffer)

    缓冲区(Buffer):一个用于特定基本数据类型的容器,由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类. Java NIO 中的Buffer 主要用于和NIO中的通道(Ch ...

随机推荐

  1. git 查看生成对象

    1. find .   查看目录中所有对象 2. find .git/objects 查看所有对象 3. git cat-file -p 散列值  输出文件内容

  2. JavaScript写一个小乌龟推箱子游戏

    推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用 ...

  3. Mysql-linux下密码修改,忘记密码修改,超级管理用户修改

    未忘记密码 方法一:在mysql系统外,使用mysqladmin # mysqladmin -u root -p password "test123"Enter password: ...

  4. 使用HTML来生产Android界面

    使用HTML来生产Android界面 (2013-03-11 17:50:39) 转载▼   分类: Android 1. HTML 开发软件界面   因为android软件开发分工目前还没有细化,程 ...

  5. js-JavaScript高级程序设计学习笔记6

    第八章 BOM 1.BOM的核心对象是window,他表示浏览器的一个实例.在浏览器中,window对象有双重角色,它既是通过JS访问浏览器窗口的一个接口,又是ES规定的Global对象. 2.定义全 ...

  6. php发送http put/patch/delete请求

    今天学RESTful API的编写,发现不知道怎么发送HTTP PUT/PATCH/DELETE请求,还是要学习一个. 使用curl_opt函数来发送各式各样的http请求动作,不仅限于get和pos ...

  7. bzoj2716: [Violet 3]天使玩偶

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  8. Ajax请求接口加密研究(针对网页前端的接口安全加密机制研究)

    通常我们在h5前端调用后台接口时,一般是ajax,那么接口的安全成了一个问题. 这里可以肯定的说,前端调用的接口一定要验证! 然后剖析了微信网页版.京东网页版这些,也都是通过接口的形势绑定数据,所以在 ...

  9. 良精南方cms /inc/Check_Sql.asp SQL Injection Based On Cookie

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link:2. 漏洞触发条件 0x1: POC usi ...

  10. A.Kaw矩阵代数初步学习笔记 3. Binary Matrix Operations

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...