import java.nio.ByteBuffer;
/**
*
* 获取基本数据类型.
*
*/
public class GetData {
private static final int BSIZE = 1024;
public static void main(String[] args) {
ByteBuffer bb = ByteBuffer.allocate(BSIZE);
int i = 0;
printBuffer(bb);
//ByteBuffer实例中每个字节自动分配为0
while(i++ < bb.limit()){
int get = bb.get();
//System.out.println("get: " + get);//get=0
if(get != 0){
System.out.println("nonzero");
}
}
System.out.println("i = " + i);//1025
printBuffer(bb);//position=1024
System.out.println("--------------");
bb.rewind();//指针移到数据头
printBuffer(bb);//position=0
//保存并读取一个字符数组
bb.asCharBuffer().put("Hello world!!");
char c ;
while((c = bb.getChar()) != 0 ){
System.out.print(c + " ");
}
printBuffer(bb);//position=28
bb.rewind();
//保存并读取一个short
bb.asShortBuffer().put((short)4583442);
System.out.println(bb.getShort());
printBuffer(bb);//position=2
bb.rewind();
//保存并读取一个int
bb.asIntBuffer().put(856522114);
System.out.println(bb.getInt());
printBuffer(bb);//position=4
bb.rewind();
//保存并读取一个long
bb.asLongBuffer().put(1286522114);
System.out.println(bb.getLong());
printBuffer(bb);//position=8
bb.rewind();
//保存并读取一个float
bb.asFloatBuffer().put(1286522114.5F);
System.out.println(bb.getFloat());
printBuffer(bb);//position=4
bb.rewind();
//保存并读取一个double
bb.asDoubleBuffer().put(1286522114.88);
System.out.println(bb.getDouble());
printBuffer(bb);//position=8
bb.rewind();
}
static void printBuffer(ByteBuffer bb){
System.out.println("limit: " + bb.limit());
System.out.println("position: " + bb.position());
System.out.println("capacity: " + bb.capacity());
}
}
分享到:
相关推荐
本文主要关注的是Java NIO中的ByteBuffer,一个关键的数据容器,用于在通道(Channel)和缓冲区(Buffer)之间传输数据。ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。...
本篇将深入探讨Java NIO(非阻塞I/O)中的ByteBuffer和Mina库自定义的ByteBuffer之间的区别。 Java NIO的ByteBuffer是Java标准库提供的一个核心类,它是通道(Channel)和缓冲区(Buffer)之间数据传输的主要媒介。它...
Java NIO提供了诸如ByteBuffer、CharBuffer、IntBuffer等类型,对应于不同的数据类型。缓冲区具有读写位置,可以通过flip()、clear()和rewind()等方法来管理缓冲区的状态,从而高效地进行数据读写。 3. **选择器...
缓冲区类型包括ByteBuffer、CharBuffer、IntBuffer、DoubleBuffer等,它们都继承自`java.nio.Buffer`。 3. **选择器(Selector)**:用于监听多个通道的事件(如连接就绪、数据到达等),当某个通道准备好进行读写...
Java提供了多种Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,分别对应不同数据类型。每个Buffer都有特定的方法用于写入、读取、清理和翻转数据。 2. 通道(Channel):通道是数据源或目标的抽象,如文件、套接...
- **缓冲区**:缓冲区是NIO的核心组件,它是一种特殊类型的数组,用于存储各种基本数据类型的数据。Buffer提供了一种高效且可控的方式来读写数据,如get()和put()方法,以及position()、limit()和capacity()属性来...
根据数据类型的不同,Java NIO 提供了多种缓冲区: - **ByteBuffer**:用于基本字节数据的缓冲。 - **CharBuffer**:用于字符数据的缓冲。 - **DoubleBuffer** / **FloatBuffer** / **IntBuffer** / **LongBuffer...
`FastCopyFile.java`可能会展示如何创建FileChannel,从源文件读取数据到一个ByteBuffer,然后将该缓冲区的数据写入目标文件的FileChannel,以此实现高效的文件复制。 接下来,我们来看`UseFloatBuffer.java`。...
Java NIO中提供了多种类型的缓冲区,如ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer、MappedByteBuffer等,每种类型的缓冲区都有其特定的用途和应用场景。 通道...
**传统阻塞I/O模型**:在传统的Java IO编程中,当我们调用`read()`或`write()`方法时,如果当前没有数据可读或写,那么这些方法将会阻塞,直到有数据可用或者写操作完成。这种阻塞机制会导致大量的线程被占用,从而...
本篇文章将深入探讨Java NIO的基本概念、核心组件以及实际应用。 一、Java NIO概述 传统的Java I/O基于流(Stream)和缓冲区(Buffer)的模型,是阻塞式的,即在进行读写操作时会一直等待数据准备好或全部写入完成。而...
- **DoubleBuffer**、**FloatBuffer**、**IntBuffer**、**LongBuffer** 和 **ShortBuffer**:分别用于存储不同的基本数据类型。 #### 三、Selectors Selectors是Java NIO中的另一个重要组件,它使得单个线程能够...